我是使用的面向连接的SOCKET,非阻塞模式。从CAsyncSocket派生的类。1。SOCKET接收数据的顺序和发送的顺序是否一致?
   比如说:client, 连续两次调用Send(...), 第一次发出去整数1,
           第二次发出去整数2
           那么在server端的OnReceive()被引发时调用Receive函数,
           是否先收到1,然后收到2?
2。发送成功的数据一定能接收到吗。3。如果两端同时发送数据会产生什么后果?

解决方案 »

  1.   

    1,2 tcp是这样有序安全的,udp不一定3 没什么后果
    winsock已经为你做了一切
      

  2.   

    我写了个应用就是,client发送命令给server,
    server做应答,主要是用了另外的线程来做传输大文件,
    一会就出问题了,发出去的命令收不到,或是server响应的时候
    调用send老是返回WOULDBLOCK..
      

  3.   

    给你个建议:自己封装 winsock api ,自己好用些
      

  4.   

    http://expert.csdn.net/Expert/topic/1325/1325807.xml?temp=.5630457
    我的两个函数.关于调用send老是返回WOULDBLOCK.
      

  5.   

    FD_WRITE消息, MFC将其映射为ONSEND()函数。
    FD_WRITE表示,现在网络已经准备好发送数据了,所以大都在这个函数中才SEND()。当然,一般情况下随意地调用SEND()也很少出问题。
    2。关于什么时候有这个消息,取决于你是否调用了ASYNCSELECT()函数,如果你使用CASYNCSOCKET及CSOCKET类,默认情况下,CREATE()时它自动调用了ASYNCSELECT(FD_WRITE),于是连接建立后,ONSEND()就会被调用。ASYNCSELETE(FD_WRITE)表示,需要发送数据,系统接到这个请求后,在网络不忙的时候,就会调用ONSEND()。
    3。需要发送数据时,先将数据缓存起来,然后调用ASYNCSELECT(FD_WRITE);在ONSEND中发送缓存中的数据。