非ブロッキングパスを達成するために、単一の入口(ライン)の原則

原理:

1  インポートソケット
 2  インポート時間
 。3  
4。 
5。 DEF メイン():
 6      ソケットを作成する
7。      tcp_server_socket = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)
 8。      結合ポート
9。      tcp_server_socket.bind((""、7890 ))
 10      #はリスニング状態を設定する
。11      tcp_server_socket.listen(128 12は     ノンブロッキングセット
13である     (偽)tcp_server_socket.setblocking
 14  
15      new_client_list = リスト()
 16 
17      しばらく真:
 18です          time.sleep(0.5 19。         試してみる20である              new_client、CLIENT_ADDR = tcp_server_socket.accept()
 21である         除くRET AS例外:
 22は、             印刷----- -----いいえ、新しいクライアントが来ません23          、他24              印刷----ない例外、その新しいクライアントの到着を意味----- 25              新規顧客のための非ブロッキングサービス
26              new_client.setblocking(偽)
 27              新しいのリストに生成されたソケット
28             new_client_list.append(new_client)
 29  
30           new_client_socket new_client_list:
 31は、             試してみる32                  recv_data = new_client_socket.recv(1024 33である             除くRET AS例外:
 34は                 印刷----クライアントから送信されたデータにはありません----- 35              36                  プリント-----異常でない、データ-----手段37                  データが空に送信されていない場合、
38は                 IF recv_data:
 39                      プリントクライアントから送信されたデータ---- ----- 40                  データが空の場合、クライアントが使用閉じる(呼び出すことを意味する)
41                  、他42                      new_client_socket.close()
 43                      new_client_list.remove(new_client_socket)
 44                      印刷" ---- -----クライアントがオフになっている" 45  
46です     ソケットを閉じる
47      )(tcp_server_socket.closeを

 

おすすめ

転載: www.cnblogs.com/yifengs/p/11418724.html
おすすめ