我正在用简单的服务器端和服务器端发送tcp文件。因为从服务器获取文件不是问题,服务器创建一个同名的文件并将数据放入该文件中,但当涉及到将文件放入服务器时,有时它工作得很好,但总是有机会这样做,因此大多数情况下,服务器会获取文件名和文件内容,而不是将其写入文件,它将文件名和内容都作为新文件名写入,而该文件仍为空。如果有人能提出任何解决方案,那将是很大的帮助。在
服务器.py
import socket
import sys
HOST = 'localhost'
PORT = 3820
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.bind((HOST, PORT))
socket.listen(1)
while (1):
conn, addr = socket.accept()
print 'New client connected ..'
reqCommand = conn.recv(1024)
print 'Client> %s' %(reqCommand)
if (reqCommand == 'quit'):
break
#elif (reqCommand == lls):
#list file in server directory
else:
string = reqCommand.split(' ', 1) #in case of 'put' and 'get' method
reqFile = string[1]
if (string[0] == 'put'):
with open(reqFile, 'wb') as file_to_write:
data=conn.recv(1024)
while True:
if not data:
break
else:
file_to_write.write(data)
data=conn.recv(1024)
file_to_write.close()
break
print 'Receive Successful'
elif (string[0] == 'get'):
with open(reqFile, 'rb') as file_to_send:
for data in file_to_send:
conn.sendall(data)
print 'Send Successful'
conn.close()
socket.close()
客户端.py
^{pr2}$
TCP是一种流式协议,因此必须在协议中设计消息中断。例如:
可接收为:
^{pr2}$所以缓冲接收到的数据,只提取完整的消息。一种方法是在消息之前发送消息的大小。在
相关问题 更多 >
编程相关推荐