【发布时间】:2018-01-29 08:16:43
【问题描述】:
我正在尝试从客户端向服务器发送一个 txt 文件。
client.py
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 8340
BUFFER_SIZE = 1024
server_addr = (TCP_IP, TCP_PORT)
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(server_addr)
file = open(r"C:\Users\sakthi\Desktop\Hi.txt",'r')
transfer = file.read(BUFFER_SIZE)
while transfer:
c.send(transfer.encode())
transfer = file.read(1024)
print (s.recv(BUFFER_SIZE).decode())
c.close()
服务器.py
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 8340
BUFFER_SIZE = 1024 # Normally 1024, but we want fast response
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
final = open(r"C:\Users\sakthi\Desktop\final.txt", 'a+')
while 1:
print('Connection address:', addr)
r = conn.recv(BUFFER_SIZE).decode()
if not r:break
final.write(r)
print("received data:", r)
k="file received"
conn.send(k.encode())
conn.close()
一旦接收到文件,服务器将向客户端发送“文件已接收”消息。 客户端将打印“文件已收到”消息并关闭连接
当我运行代码时,server.py 没有退出 while 循环
while 1:
print('Connection address:', addr)
r = conn.recv(BUFFER_SIZE).decode()
if not r:break
final.write(r)
print("received data:", r)
r = conn.recv(BUFFER_SIZE).decode() 一直在监听新消息,但是客户端已经传输了所有消息。
文件大小为1.14 KB。
谁能告诉我我的程序出了什么问题?
【问题讨论】:
-
我正在使用“if not r:break”来退出循环。所以如果接收到空数据,就会打破while循环
标签: python python-3.x sockets