我有一个二进制文件和一个原始数据列表。我想在文件块之间插入列表的元素,然后通过套接字传输它。我想将套接字用作服务器和客户端之间的管道。
我想发送文件块和原始数据块,而不是构建一个新文件并将其作为整体发送,因为原始文件可能已经很大了。
如果文件的块是 f1、f2、f3、f4 并且列表的数据是 r1、r2、r3、r4,那么我想传输以下序列:r1、f1、r2、f2、r3、f3、r4、f4。
这是我到目前为止提出的(假设每个块是 1024 字节)
服务器:
import socket
list = [r1,r2,r3,r4]
host= ''
port = 8080
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
conn = s.accept()
with open(filepath,'rb') as file:
for i in range (0,len(list)):
file.seek(i*1024)
data = file.read(1024) + list[i]
conn.sendall(data)
conn.close()
客户 :
import socket
host = 'localhost'
port = 8080
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((host,port))
with open(filepath,'ab') as file:
data = socket.recv(1056)
if data:
file.write(data)
else:
break
socket.close()
有没有更简单的方法来实现客户端和服务器之间的“管道”?
在任何情况下,客户端都应该为每个(文件块、哈希)对打开一个新连接吗?