【发布时间】:2014-10-06 01:00:54
【问题描述】:
我正在尝试使用 TCP 套接字在 Python 中编写一个简单的客户端/服务器,但我似乎无法弄清楚为什么文件没有传输。
客户:
import socket
HOST = '' #server name goes in here
PORT = 3820
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((HOST,PORT))
fileToSend = open('myUpload.txt', 'rb')
while True:
data = fileToSend.readline()
if data:
socket.send(data)
else:
break
fileToSend.close()
print 'end'
socket.close()
exit()
打印结束只是告诉我这个客户端完成了。
服务器:
import socket
HOST = ''
PORT = 3820
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind((HOST, PORT))
socket.listen(1)
file = open('myTransfer.txt', 'wb')
while True:
conn, addr = socket.accept()
data = conn.recv(1024)
print data
if data:
file.write(data)
else:
file.close()
break
socket.close()
exit()
服务器能够打印出客户端发送的正确数据,但无法将其保存到 myTransfer.txt。即使我在那里有一个 break 语句,该程序似乎也无法终止。任何帮助都会非常有帮助。谢谢!
【问题讨论】:
-
老样子,老样子。服务器不知道文件何时结束。它将永远等待。您需要先发送文件的大小,然后在服务器中使用该信息来准确接收该字节数。见code.activestate.com/recipes/…
-
@BCartolo:文件结束,连接关闭。
标签: python sockets tcp client file-transfer