TCPリスニングソケット:
新しいクライアントが接続を要求すると、サーバーのリスニングソケットは、メッセージを受信し、クライアントに新しいソケット対応を割り当て、メッセージ受信側のクライアント、
サーバーがメッセージを返すようにする場合でも、使用することは、まだソケットを聞いています
1 #TCPクライアント 2 インポートソケット 。3 。4 DEFのcilent(): 5 #1 TCPソケットの作成 6。 #はsocket.AF_INET:IPV4 socket.SOCK_STREAM:TCP 7 socket_tcp_cilent = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM ) 。8 。9 #のクライアントは、典型的にバインド(結合)IPとポートしない 10 #2の接続サーバ 。11 SERVER_IP = ' 192.168.1.103 ' 12れる SERVER_PORT 5566 = 13である SERVER_ADDR = (SERVER_IP、SERVER_PORT) 14 socket_tcp_cilent.connect(SERVER_ADDR) 15 16 ながら真: 17 #3.データの送信/受信データ 18がある (SEND_DATA = INPUT " のデータが入る送信される:" ) 。19 IF SEND_DATA == ' 出口' : 20れる 印刷(" !クライアントを閉じる" ) 21がある BREAK 22は socket_tcp_cilent.send(send_data.encode(' UTF-8 ' )) 23はある recv_data、recv_ip_port = socket_tcp_cilent.recvfrom(1024 ) 24 プリント(" メッセージをサーバS%に送り返さ"%(recv_data.decode(' GBK ' ))) 25 26である #4閉じるTCP接続 27 socket_tcp_cilent.close() 28 29 30 IF __name__ == ' __main__ ' : 31である (cilent)
1 #TCPサーバ 2 インポートソケット 3。 4。 DEF サーバ(): 5 。NUM = 1 。6 #1のソケットを作成する 。7 socket_tcp_server = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM) 8。 9。 #2バインドローカルバインドの情報(IP、ポート) 10 SERVER_IP = '' 。11 SERVER_PORT 5566 = 12である = SERVER_ADDR (SERVER_IP、SERVER_PORT) 13である (SERVER_ADDR)socket_tcp_server.bind 14 15 #3は、アクティブなデフォルトソケットは受動的リッスンなるせて 16 socket_tcp_server .listen(128) 17 #のリスニングソケット:それぞれの新しいクライアント接続のための責任待機 18 19 #クライアント接続用の4待ちを受け入れる 20 #は、ここでプログラムの実行をブロックするデフォルトに、クライアント接続サーバ、ブロック解除 21 #受け入れます、最初のものは新しいソケットであるバイナリタプルを返し、第二は、クライアントである 22 #クライアントサービスのための新しいソケットを生成するための責任を受け入れる 23 しばらく:真の 24 印刷(「新規顧客のための待ち時間を...すぐに終わる' ) 25 new_cilent_socket、cilent_addr = socket_tcp_server.accept() 26 印刷する(' 新しいクライアントが%Sに来ている"%STR(cilent_addr)) 27 しばらく真:#複数のクライアントが同じサービスのための悪い時間を通じて 28 #要求が新たに割り当てられたソケット、受信クライアントを使用して送信 29 #の場合のrecvブロック、ブロック解除二つの方法: 30 #クライアントが1て送信データ 31 #2クライアントが近いリードコール 32を 試み: 33である (1024)recv_data = new_cilent_socket.recv #正常受信データ 34は 除く: 35 BREAK 36 #(new_cilent_socket)プリント 37 プリント(' 要求がクライアントによって送信されます。 S%'%recv_data.decode(' UTF-8 ' )) 38である #クライアントは、サービス、クライアントsocket.close()の実行を必要としない場合は、メッセージサーバソケットは、(RECVがブロック解除)空である 39 #クライアントへのデータの折り返し部分 40 (new_cilent_socket.send " --- OK ------- ---- ' .encode(' UTF-8 ' )) 41がある #近いソケット 42がある ()new_cilent_socket.close 43が 印刷(「クライアントが終了したことを%D解決サービス!'%NUM) 44である NUM = 1つの+ 45 #はソケットクローズ 46は socket_tcp_server.close() 47 48 IF __name__ == ' __main__ ': 49 サーバー()