我写了一个服务器/客户端的代码,主要的功能是两边可以对发数据。
操作步骤:
1.先开启服务器,进行监听。服务器端是用
WSAAsyncSelect(m_serverConnectclient,m_hWnd,CLIENTSENDINFO,FD_WRITE|FD_READ|FD_ACCEPT|FD_CLOSE);
来响应网络事件的。
2.再开启客户进行连接
问题出现了:
每当我打开服务器,也打开客户端的时候。在服务器端不仅触发FD_ACCEPT事件还触发FD_WRITE事件。
FD_ACCEPT事件先响应,FD_WRITE事件后响应,这种怪现象只在第一次客户端连接服务器端的时候产生
以后发送数据的时候都不会出现这种问题。

解决方案 »

  1.   

    FD_WRITE Socket s is ready for writing. 你说该不该收到哦?直接无视掉accept产生的FD_WRITE好了
      

  2.   

    这个socket是用来接受连接的,只管FD_ACCEPT就好,其它都不用管。
      

  3.   

    FD_ACCEPT事件先响应,FD_WRITE事件后响应
    正常啊,例如:client先连接,然后立即发送数据嘛。
      

  4.   

    此种情况正常,FD_WRITE表示你可以发送数据了
      

  5.   

    当然是这样了,正常现象。你看一下tCP/IP协议的三次握手就知道了。这种情况你可以忽略FD_WRITE。
      

  6.   

    服务器端和客户端连接上了就应该触发FD_WRITE事件吗?服务器端还没有向客户端发送数据,
    怎么还会有个FD_WRITE,
    不是直到我在服务器端触发了FD_WRITE事件,才会响应的吗?
    作为新手的我还不是很明白,望高手们再指教指教!