【发布时间】:2017-06-17 01:09:04
【问题描述】:
我正在阅读一本网络书籍,根据我阅读的有关 TCP 协议的内容,它确保数据将被发送。我想编写一些代码来进行文件传输。在开始之前,我还在 Python 文档中读到了这段话:
“应用程序负责检查所有数据是否已 发送;如果只传输了部分数据,应用程序需要 尝试传递剩余数据”
这似乎与我在网络书籍中读到的内容相矛盾。上面的段落说应用程序对丢失的数据负责。
我可能是误会了,所以我想问一些问题:
1-如果我必须检查数据是否发送,那为什么要使用 TCP?
2-我在网络书籍中读到 TCP 进行数学运算以确保数据存在。那为什么不使用 TCP 是浪费时间呢?
3- python 文档没有指定缓冲区大小。一次发送的最大缓冲区大小是多少?
4-我在网络书上看到服务器可以增加量 如果它知道客户端可以接收它可以发送的数据。这能改变吗 缓冲区的大小超过最大数量?
到目前为止,这是我的代码尝试:
服务器代码:
import socket
s = socket.socket()
host = socket.gethostname()
port = 3000
s.bind((host,port))
s.listen(1)
c,addr = s.accept()
with open("Filetosend","rb") as File:
data= File.read(1024)
while data:
c.send(data)
data = File.read(1024)
s.close()
客户端代码:
import socket
s= socket.socket()
host = socket.gethostname()
port = 3000
s.connect((host,port))
with open("Filetowrite","wb") as File:
data = s.recv(1024)
while data:
File.write(data)
data = s.recv(1024)
s.close()
【问题讨论】: