相互に通信するには、udpとtcpの2つの方法があります。qqと同様に、udpとtcpは共存しますが、現在、qqは徐々にtcpサーバーに変換されています。
以下は、udpで実装されたチャットウィンドウです。
import socket
def send_msg(upd_socket):"""メッセージを送る"""
# 送信するものを取得する
dest_ip =input("相手のIPアドレスを入力してください:")
dest_port =int(input("相手のポート番号を入力してください:"))
send_data =input("送信するメッセージを入力してください")
upd_socket.sendto(send_data.encode("utf-8"),(dest_ip, dest_port))
def recv_msg(upd_socket):
# データを受信して表示する
recv_data = upd_socket.recvfrom(1024)print("%s:%s"%(recv_data[0].decode("utf-8"),str(recv_data[1])))
def main():
# ソケットを作成する
upd_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# バインディング情報
upd_socket.bind("",7788)
# 物事を処理するためのループ
while True:send_msg(upd_socket)recv_msg(upd_socket)if __name__ =="__main__":main()
このようなコードを書くためのフォーマットをお勧めします。最初に基本的なフレームワークを構築します
def main():
pass
# 1. ソケットを作成する
# 2. ローカル情報をバインドする
# 3. 宛先アドレスとポート番号を知っている
# 4. データを受信して表示する
# 5. ソケットを閉じる
if __name__ =="__main__":main()
これが基本的なステップです。最初に思いついたので、代表者を書き始めました。コードは比較的固定されています。質問する必要があるのは、データの送受信にutf-8とgbkのどちらを使用するかです。私たちはLinuxシステムであり、ターゲットはWindowsシステムであるため、送信するデータは.encode( "gbk")でエンコードする必要があり、データを受信すると、正しく受け入れられるように.decode( "gbk")でデコードされます。漢字。
次に、メインプログラムをわかりやすくするために、メッセージを送受信し、** def send_msg(upd_socket):と def recv_msg(upd_socket):**の2つの関数にラップします。注、新しい関数を作成するときはいつでも、この関数はパラメーターを必要としないと考えなければなりません。
最後に、closeを呼び出す必要がないことがわかるため、ソケットを閉じるためにudp_socket.close()を記述しなかったことがわかります。
pyhtonでは、ループを使用する場合、1を記述せず、Trueを記述します。
pythonチャット機能に関するさらにすばらしい記事については、トピックをクリックしてください:pythonチャット機能の概要
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts