<p>我已成功地将文件内容(图像)复制到新文件中。然而,当我在TCP套接字上尝试同样的方法时,我面临着问题。服务器循环未退出。客户端循环到达EOF时退出,但服务器无法识别EOF。</p>
<p>代码如下:</p>
<p><strong>服务器</strong></p>
<pre><code>import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
f = open('torecv.png','wb')
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
print "Receiving..."
l = c.recv(1024)
while (l):
print "Receiving..."
f.write(l)
l = c.recv(1024)
f.close()
print "Done Receiving"
c.send('Thank you for connecting')
c.close() # Close the connection
</code></pre>
<p><strong>客户</strong></p>
<pre><code>import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.connect((host, port))
s.send("Hello server!")
f = open('tosend.png','rb')
print 'Sending...'
l = f.read(1024)
while (l):
print 'Sending...'
s.send(l)
l = f.read(1024)
f.close()
print "Done Sending"
print s.recv(1024)
s.close # Close the socket when done
</code></pre>
<p>这是截图:</p>
<p><strong>服务器</strong>
<img src="https://i.stack.imgur.com/nZq49.png" alt="Server"/></p>
<p><strong>客户</strong>
<img src="https://i.stack.imgur.com/GOBGk.png" alt="Client"/></p>
<p>编辑1:复制额外数据。使文件“不完整”
第一列显示已接收的图像。好像比派来的还大。因为这个,我无法打开图像。好像是个损坏的文件。</p>
<p><img src="https://i.stack.imgur.com/hpjGE.png" alt="File sizes"/></p>
<p>编辑2:这是我在控制台中的操作方法。这里的文件大小是一样的。
<img src="https://i.stack.imgur.com/kPuC4.png" alt="Python Console"/>
<img src="https://i.stack.imgur.com/r5Ml1.png" alt="Same file sizes"/></p>