python socketプログラミングtcpプロトコルマルチクライアント接続
2265 ワード
1.socketの紹介:
ソケット、ジャック、コンピュータでは一般的にソケットと呼ばれています.同じコンピュータの中の2つのプログラムはファイル、パイプ、キューなどの方法で通信することができます.しかし,ネットワークでは2台のコンピュータ間の通信はsocketによる通信が必要である.
2.socketのtcpプロトコル:
tcpプロトコル英語:Transmission Control Protocol,中国語:転送制御プロトコルは、tcp/ipプロトコルファミリーのプロトコルであり、ネットワークプロトコル層に属する転送層である.接続向けで、安定して(パケットが失われないことを指す)、伝送速度が遅い(udpプロトコルに対して)プロトコルです.
3.pythonコード実装:
クライアントクライアントクライアント:
サーバ側server:
4.注意点:同じ時点でポートごとに1つのプロセスしか占有できないため、1つのクライアントと接続チャネルを確立するしかなく、プログラムは複数のクライアントを同時に傍受することができる. 複数のクライアントが同時に接続されると、接続中のクライアントがポートを解放するのを待つ待機に入ります.
最後に、指摘を歓迎しますが、友軍ですから、口を開かないでください.
ソケット、ジャック、コンピュータでは一般的にソケットと呼ばれています.同じコンピュータの中の2つのプログラムはファイル、パイプ、キューなどの方法で通信することができます.しかし,ネットワークでは2台のコンピュータ間の通信はsocketによる通信が必要である.
2.socketのtcpプロトコル:
tcpプロトコル英語:Transmission Control Protocol,中国語:転送制御プロトコルは、tcp/ipプロトコルファミリーのプロトコルであり、ネットワークプロトコル層に属する転送層である.接続向けで、安定して(パケットが失われないことを指す)、伝送速度が遅い(udpプロトコルに対して)プロトコルです.
3.pythonコード実装:
クライアントクライアントクライアント:
import socket
# TCP socket ,SOCK_STREAM tcp
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# , , ip ,
address = ("", 2426)
#
clientSocket.connect(address)
while True:
message = input("client send:") #
# send ,
# python2
clientSocket.send(message.encode("utf-8"))
if len(message) == 0:
break
# ,
clientSocket.close()
print(" ")
サーバ側server:
import socket
from multiprocessing import Process
def get_client_message(clientSocket, clientInfo):
# , , ,
while True:
recv_data = clientSocket.recv(1024)
if len(recv_data) == 0:
break
else:
print(" %s:%s" % (clientInfo, recv_data.decode("utf-8")))
print(" %s " % (clientInfo,))
clientSocket.close()
if __name__ == '__main__':
# socket
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
addre = ("", 2426)
#
serverSocket.bind(addre)
# ,
serverSocket.listen(5)
while True:
# socket ip, ,
# accept() ,
clientSocket, clientInfo = serverSocket.accept()
# ,
process = Process(target=get_client_message, args=(clientSocket, clientInfo))
process.start()
process.join()
serverSocket.close()
4.注意点:
最後に、指摘を歓迎しますが、友軍ですから、口を開かないでください.