我有以下客户端-服务器套接字应用程序可以将文件上传到服务器。
服务器代码:
import socket,sys,SocketServer
class EchoRequestHandler(SocketServer.BaseRequestHandler):
def setup(self):
print self.client_address, 'connected!'
self.request.send('hi ' + str(self.client_address) + '\n')
def handle(self):
while 1:
myfile = open('test.txt', 'w')
data = self.request.recv(1024)
myfile.write(data)
print 'writing file ....'
myfile.close()
def finish(self):
print self.client_address, 'disconnected!'
self.request.send('bye ' + str(self.client_address) + '\n')
if __name__=='__main__':
server = SocketServer.ThreadingTCPServer(('localhost', 50000), EchoRequestHandler)
server.serve_forever()
客户端代码:
import socket
import sys
HOST, PORT = "localhost", 50000
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((HOST, PORT))
# Receive data from the server and shut down
received = sock.recv(1024)
date = open('file_t.txt').read()
sock.sendall(data + "\n")
finally:
sock.close()
print "Sent: {}".format(data)
print "Received: {}".format(received)
但是在服务器端,控制台输出是不停的“写入文件......”,最后文件没有被存储,它是一个空的 test.txt 文件