首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

socket 发送有关问题

2012-09-16 
socket 发送问题创建的socket默认是阻塞的,所以看书上一般用select检查检查各个socket的状态,来判断socket

socket 发送问题
创建的socket默认是阻塞的,所以看书上一般用select检查检查各个socket的状态,来判断socket可读还是可写。我一般也是这样做的。但最近看了send之后,感觉还是有些问题不理解。比如,利用selelct检查到socket可写,但是如果我的socket是阻塞的,发送的长度比较大,有可能发送很久也发送不成功,一样会阻塞住。有没有方法,可以检查到socket可以发送的状态后,再检查可以发送多少字节,那么我就自动调节发送的字节数,不会发送的时候会有可能出现发送阻塞住的情况发生。

[解决办法]
[Quote=引用:]

引用:
1,检查send返回值,如果返回值小于请求值或者返回值为-1且errno==EAGAIN, 那么缓存未发出的数据,注册Write事件。

2,如果触发了Write事件,将缓存的数据再次写出,同第一步一样,如果全部发出则取消Write事件,否则继续保留Write事件等待下次触发继续写出剩余数据。

3,如果缓存里有数据,而此时希望继续发送新数据,为了保证数据的顺……
[/Quote]

不知道非阻塞?

热点排行