关于socket的问题

gisdreamfly 2011-11-07 02:54:37
1、Socket异步通讯,做服务端时,希望设置终端一定时间内部上传数据就断开;异步设置receivetimeout是不是无效?
(不想利用循环来遍历socket接收时间,感觉太耗资源了)
2、Socket设置nodelay=true,然后调用socket.send 或者beginsend 是不是就可以将数据发送出去,而不用等缓冲区满??
(阻塞模式)如果是的话,nodelay对beginreceive有影响吗???

3、关于socket缓冲区的问题,socket发送数据是不是有2个条件,一个是缓冲区满;另外一个是不是一定的时间;
比方说 socket调用send之后长时间没有再次调用,数据肯定是发出去了,(缓冲区没有满)。是不是如果超过了一定时间,不管满不满都发送呢??

不懂底层,有点晕,期待高手们指点迷津,谢谢了~~
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flashcom 2011-11-08
  • 打赏
  • 举报
回复
1.receivetimeout仅适用于同步的receive,异步不适用
2.nodelay=true,Nagle 算法使套接字缓冲最多 200 毫秒内的数据包,然后使用一个数据包发送它们,从而减少网络流量,基本是发送就可以发送出去了
3.socket基本是超过一定时间不管满不满都会发送出去的,除非你的程序对时间同步有很大的要求,不然这些底层的事你不用去管,就send就可以了
gisdreamfly 2011-11-08
  • 打赏
  • 举报
回复
再顶顶~~
求解答~~
gisdreamfly 2011-11-07
  • 打赏
  • 举报
回复
高手们,大虾们,看过来吧~~~QQQ

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧