【发布时间】:2016-02-21 15:13:22
【问题描述】:
我有一个使用 TCP 进行通信的客户端和服务器。我想将数据从客户端传输到服务器。
客户:
import socket
V=''
for i in range(1,400)
V=V+"%s %s %s" %s (i,i,i)
s = socket.socket(socket.AF_INT,socket.SOCK_STREAM)
s.connect((IP,PORT))
s.send(V)
s.close
和服务器:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
while 1:
connection, addr = s.accept()
V_recived = connection.recv(8192)
当我运行这两个脚本时,我看到客户端计算机上 V 的大小为 4485 字节,而服务器计算机上 V_received 的大小在不同运行之间发生变化:大部分时间是 1481 字节,有时是为 4485 或更少。 据我了解,使用 TCP 协议应该保证我的所有数据都会被传输,因此我不明白我在做什么错......
有什么想法吗?
【问题讨论】:
-
TCP 保证在一端塞入流中的字节将以相同的顺序从另一端掉出,并且不会丢失或重复。仅此而已,当然不支持大于一个字节的实体。
标签: python sockets tcp size buffer