我试图学习如何在python中使用套接字在两台计算机之间进行通信.不幸的是,当一切似乎都正确时,我会收到此错误:
OSError:[Errno 107]传输端点未连接
谷歌上搜索,我发现这是因为连接可能已经下降.但是我在同一台机器上运行程序的客户端和服务器端.我尝试从客户端再次连接,我得到了这个:
OSError:[Errno 106]传输端点已连接
表示先前的连接仍然完好无损.我对发生的事情以及如何使其发挥作用感到非常困惑.这是一个屏幕截图,显示了我要做的事情和问题:
我在python 3.5.0上进行了一些改动测试了你的代码并且它可以工作:我认为技巧是在sock.accept()
方法中返回一个元组:
服务器socket.accept() 接受连接.套接字必须绑定到一个地址并侦听连接.该返回值是一个对 (康涅狄格州,地址),其中conn是一个新的套接字对象可用于在连接上发送和接收数据,和地址是绑定到插座上的连接的另一端的地址.
#server >>> import socket >>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >>> sock.bind(("localhost", 8081)) >>> sock.listen(2) >>> conn, addr = sock.accept() >>> data= conn.recv(1024).decode("ascii")客户:
#client >>> import socket >>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >>> sock.connect(("localhost",8081)) >>> sock.send("hi".encode()) 2 >>> sock.send("hiiiiiii".encode()) 8 >>> sock.send(("#"*1020).encode()) 1020