TCP菜鸟问题(50分)

  • 主题发起人 主题发起人 delphifans_hx
  • 开始时间 开始时间
D

delphifans_hx

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一端发送一个图片文件, 用SockAPI
socket(AF_INET, SOCK_STREAM, 0)
通过Server端向Client发送, 每次发送2048K,
客户端结束接收的判断是
While (RecvSize<2048)
但这样基本不能接受到完整图片,这是为什么,(可能与TCP的流什么的有关)
更怪的的每次接收都不同, 有时甚至只有120K
照这样的话, 我怎么判断发送完毕呢?
分不够可以加
 
这是正常的,你在发送之前先把总的数据量发过去,等呆对方发送接受到
总的数据量以后再发送数据,这样接受的就知道数据是否接受完成了
 
是个好办法
 
嗯,以前写dos下的程序时也遇到过这样的问题,但是它那个例程也是靠While (RecvSize<2048)
这样的判断来结束的,偏偏它这样写的Ftp Server接收又没有问题,可惜那时没有深究。
那时是在局域网中试验的,不知道有没有关系。
我也很想知道在一次简单的对答中,例如Client向Server发送一次请求,Server向Client发送回复。
如果一直保持连接,接收端怎么知道这次的数据已经接收完毕,然后再处理给出回答呢。
如果先给出数据的大小,如果这个大小是以字符串表示的也有可能少接收阿,例如给出大小是12345 byte,接收端会不会只收到1234,因而少接收数据呢
 
你可以自己定义发送的数据包格式 里面有一项内容表明该包的大小 客户端接收到之后判断
 
多人接受答案了。
 
后退
顶部