读书人

关于send函数的一个小疑点

发布时间: 2013-01-25 15:55:29 作者: rapoo

关于send函数的一个小问题
我发现客户端只要连接成功,调用send函数服务端就会一直发送数据,尽管客户端(我压根没写recv函数)收不到数据,而且send函数的返回值一直是发送的数据的字节数,怎么判断客户端没有调用recv函数从而不再给它发送数据。。。
[解决办法]
自己缓冲区满和对方缓冲区满应该就发不了的
[解决办法]
怎么判断客户端没有调用recv函数从而不再给它发送数据。。。

调用recv 按我的理解 是不是 对方没处理你发出去的报文

在你的 c/s 两端 加入 应答机制
或者
因为 进行到send 和 recv 说明双方以连接了
那么对方会为该套接字创建一个接收队列,队列有容量限制
你不断发出去的报文,会一直写入到该队列,如果队列容量已经满了,对方会抛弃该报文,不入队,且会向你的主机 发来 之前的 seq和ack,那么只能在观察seq和ack的值判断 对方是否处理了这些报文


[解决办法]

引用:
怎么判断客户端没有调用recv函数从而不再给它发送数据。。。


一直send理论上没问题,只要监视send返回值,发不成功的时候就表示对方没及时接收了。
从原理上说,send和recv都是对缓冲区的操作,当发送到“发端的发送缓冲区+收端的接收缓冲区+8KB”大小的时候,就发不动了。

读书人网 >VC/MFC

热点推荐