码迷,mamicode.com
首页 > 其他好文 > 详细

SOCKET的一些注意事项

时间:2015-09-10 15:45:26      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

1. 如果采用同步处理,其实,是可以多次接受数据的,

 

MemoryStream ms = new MemoryStream(); 
  while (true) 
 { 
   Console.WriteLine("Available :{0}", socket.Available); 
     int receivedBytesLength = socket.Receive(receivedBytes, 0, receivedBytes.Length, SocketFlags.None); 
    if (receivedBytesLength > 0) 
   { 
      ms.Write(receivedBytes, 0, receivedBytesLength); 
   } 
   else 
       { 
             break; 
       } 
 } 

最后 ms.ToArray() ,就能得到相应的数组了 

recevieBytes是个定义好的固定大小的byte数组 

 

2.  IOCP模式

  基本上都是微软官方的DEMO改的,在processreceive处理里面,有异步send的过程,然后,在processsend的处理里,执行成功了,会再次调用receiveasync()方法,最终会在processreceive方法里,

执行CloseSocket()的。

这里感觉奇怪的是,如果我直接在send里执行关闭,最终还是有 time_wait残留的(这个30秒-4分钟之内,一定会小时的,所以,也不算是影响太大),但是如果 receiveasync一次之后,执行的关闭,就没有了 

,不知道最终的原理是什么意思,需要好好的研究一下哈,如果有明白的同学,也请大家分享一下哈! 

 

SOCKET的一些注意事项

标签:

原文地址:http://www.cnblogs.com/davytitan/p/4797994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!