zoukankan      html  css  js  c++  java
  • SOCKET的一些注意事项

    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一次之后,执行的关闭,就没有了 

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

  • 相关阅读:
    asp.net 学习连接
    学习笔记一
    windows 2008 r2 AD密码策略
    Windows Server 2008 R2之活动目录回收站
    用java 调用 .net 自定义的 Soap WEB Service
    昆明赶街时间
    Windows Server 2008 R2 AD的备份和恢复
    AD 自定义属性
    AD、IIS、asp.net
    wsgen与wsimport命令说明
  • 原文地址:https://www.cnblogs.com/davytitan/p/4797994.html
Copyright © 2011-2022 走看看