服务端处理接收消息流程:
1.ReciveCallBack 调用回调
2.EndReceive 挂起接收消息,以便读取数据
3.读取数据
4.BeginReceive 再次启动接收消息问题出在当EndReceive后到下次BeginReceive 之间,如果客户端还在不停发送消息给服务端,会出现之间的某些消息服务端没有收到,那客户端一般怎么来判断服务端是否正在等待接收客户端的消息呢?
服务端客户端socketc#消息

解决方案 »

  1.   

    不会的,你没有BeginReceive,发送的数据就堆积在里面,直到你Receive。
      

  2.   

    可是我试验了下的确收不到啊
    我客户端连续发送200条消息,服务端recive这里可能就收到130多条
      

  3.   

    设计上比较合理的的情况是,通常就算是长连接访问,服务器端往往也支持“并行处理”。例如客户端连上服务器,然后按照次序1,2,3,4,5分别发了5条消息,同时按照次序1、3、4、2、5接收到了回应。这样,首先不需要每一次发送消息时都进行TCP握手。其次是服务器可以并发地处理消息,并且可以打乱次序返回。显然服务器端顺序地接收消息、顺序对发送回应,只不过服务器端处理消息产生回应的过程是并发的,这样的服务器设计比较高效。不过这个并不涉及所谓“丢失消息”的问题。如果tcp服务器连消息都丢了,200条消息只收到130条,那还玩儿什么服务器?