locked
求解:服务端接收 SL Socket发送的数据 不正常. RRS feed

  • 问题

  • 服务端有一个接收数据的线程,接收到数据都放到列队里。

    服务端从队列里处理数据,再发送到SL

    SL socket.SendAsync(sendargs)。如果 Socket不关闭,服务端的队列里的数据条数不正确,条数会越来越多。

    如果SL Socket关闭了。服务端的队列条数不会增加。

    可Socket关闭了,SL接收数据线程都没法运行了,因为Socket没了?

     

    求解这个问题!

     

    2011年7月2日 7:58

答案

  • 这是正常的,Socket就是为了持续保持连接,不应该关闭的。

    你查一下关于Socket的“粘包”问题你就明白呢!如果还有问题请联系我吧!我可以和你一起分享我的一些知识。

    当然不会给你代码,因为有写Socket的开发内容不能公开。^_^


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年7月7日 5:26
    版主

全部回复

  • 2011年7月5日 2:23
    版主
  • socket编程成本比较复杂,单看你以上的问题描述并不能帮你解决问题,请出示更多的代码或相关描述。
    2011年7月5日 7:48
    版主
  • SL
        #region 发送消息模块
        /// <summary>
        /// 发送消息
        /// </summary>
        public static bool SendMessage(byte[] buffer)
        {
          SocketAsyncEventArgs sendargs = new SocketAsyncEventArgs();
    
          //设置IP,端口
          sendargs.RemoteEndPoint = endPoint;
    
          //设置消息缓冲区
          sendargs.SetBuffer(buffer, 0, buffer.Length);
    
          //发送消息成功回调函数
          // sendargs.Completed += new EventHandler<SocketAsyncEventArgs>(SendBack);
    
          //发送消息
          bool iReturn = socket.SendAsync(sendargs);
    
          return iReturn;
    
        }
        #endregion
    
    这里的socket是否要关闭?
    
    如果 Socket不关闭,服务端的队列里的数据条数不正确,条数会越来越多。
    
    如果SL Socket关闭了。服务端的队列条数不会增加。
    
    

    2011年7月6日 0:30
  • 这是正常的,Socket就是为了持续保持连接,不应该关闭的。

    你查一下关于Socket的“粘包”问题你就明白呢!如果还有问题请联系我吧!我可以和你一起分享我的一些知识。

    当然不会给你代码,因为有写Socket的开发内容不能公开。^_^


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年7月7日 5:26
    版主