问题显然是(如您所知),当您尝试连接时,服务器端未打开端口36250(因此连接被拒绝)。我可以看到服务器应该在收到SEND
另一个连接上的命令后打开此套接字,但显然是“未与客户端同步打开它”。
好吧,主要原因是没有任何同步。致电:
cs.send("SEND " + FILE)
cs.close()
只是将数据放入OS缓冲区;close
可能会刷新数据并推送到网络中,但几乎可以肯定会在数据到达服务器之前返回。sleep
之后添加close
可能会缓解此问题,但这不是sync 。
正确的解决方案是 确保 服务器已打开连接。这将要求服务器向您发送一些消息(例如OK
,或者更好PORT 36250
地指示连接位置)。这样可以确保服务器已经在侦听。
另一件事是,以确保从缓冲区中获取了多少字节。或使用sendall
。
(很抱歉打扰这个较晚的答案,但是我发现这是一个访问量很高的问题,我真的不喜欢注释部分中的睡眠想法。)