Pythonのネットワークプログラミングの_tcp(要約版)

 

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(12817      #のリスニングソケット:それぞれの新しいクライアント接続のための責任待機
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      サーバー()

 

 

おすすめ

転載: www.cnblogs.com/NiBosS/p/11933145.html