著作権:転載へようこそが、ソースおよび記事の著者を明記してください。https://blog.csdn.net/handsomehuo/article/details/90900708
症状:ConnectionResetError:[errnoが54]接続ピアによってリセット
問題の説明:著者のソケットプログラミング中に発生した問題
問題原因:サーバー側のパラメータと意識のクライアント側の不足。
クライアント端末addrが固定されているので、クライアント側、サーバ側に渡され、したがってかRECVを送信のみs.send()s.recv()は次のように。
しかし、サーバ側のために、2種類のパラメータがあり、形式は次のとおりです。
<socket.socket FD = 4、家族= AddressFamily.AF_INET、タイプ= SocketKind.SOCK_STREAM、プロト= 0、LADDR =( '127.0.0.1'、9999)、RADDR =( '127.0.0.1'、49362)>(」 127.0.0.1' 、49362)
だから、実際の動作は、区別するとき:
sock, addr = s.accept()
受信し、必要なsock.send(送信)とsock.recv()ではなく、s.send()とs.recv()。
根深いロジックがあります:
- ソケットモジュールは、プログラミングを容易にするために、アプリケーション層のTCP / IPプロトコルをカプセル化します。
- ソケットサーバー側は、TCP3ハンドシェイクにより、クライアント側と連絡を取って、受信するための責任があります。
- サーバー側のソケットのクライアント側での私たちの靴下ソケットは別のRESVを送ることができますので、実際には同じ機構であり、
- 待機ソケットのサーバーの多くの靴下の終わり、および異なるクライアント通信のために。