需求是这样的,我是客户端,通过长连接连接到服务端,除了客户端主动向服务端请求并收取服务端返回的需求外,还要求能在这个连接上接收服务端主动给我发过来的通知等。合作方不同意用一对SOCKET。 之前没弄过这样的,我试着在connet前加了个WSAAsyncSelect就总连不上了,服务端显示连上后马上就断开了。 
哪位大侠做过类似的?给段示例代码?谢谢了!!!

解决方案 »

  1.   

    合作方不同意用一对SOCKET--什么意思?开一个线程不停的read怎么样?
      

  2.   

    合作方不同意用一对SOCKET--什么意思? 开一个线程不停的read怎么样?-------------------------------启两个连接,一个上行,一个下行。两端互为服务端和客户端不停的read???效率不太好吧???有没有好的办法?用消息怎么实现??
      

  3.   

    用面向连接的SOCKET不就行了吗?
    服务器端接到连接启动一个线程,这个线程可以完成数据的发送\接收啊,客户端也能正常的发送\接收数据.
    还有就是用同步接收机制.
      

  4.   

    一对SOCKET当然没有必要了,你只需要客户端是吧
    // 1.首先定义消息值
    #define UM_SOCK (WM_USER + 1)// 2.然后指出自定义消息的处理函数
    ON_MESSAGE(UM_SOCK, OnRecvMsg)// 3.在socket、connect之后
    if(WSAAsyncSelect(m_SocketClient, m_hWnd, UM_SOCK, FD_READ | FD_CLOSE) == SOCKET_ERROR)
    {
      // 错误处理
    }// 4.最后写消息处理函数
    VOID OnRecvMsg(WPARAM wParam,LPARAM lParam)
    {
      switch(WSAGETSELECTEVENT(lParam))
      {
      // 有数据需要接收
      case FD_READ:
        // 接收数据
        break;
      // 服务器端连接关闭
      case FD_CLOSE:
        closesocket(m_SocketClient);
        break;
      }
    }
      

  5.   

    合作方不同意用一对SOCKET--什么意思?
      

  6.   

    合作方不同意用一对SOCKET--什么意思?
    --------------------------------------
    对方不同意用一对SOCKET, 启两个连接,一个上行,一个下行。两端互为服务端和客户端 的那种
      

  7.   

    // 3.在socket、connect之后
    if(WSAAsyncSelect(m_SocketClient, m_hWnd, UM_SOCK, FD_READ | FD_CLOSE) == SOCKET_ERROR)
    问题的原因可能是找到了,在这里,应该是我的WSAAsyncSelect写在connect之前了
      

  8.   

    socket本来就是 双向的!!!当然可以 双向主动发送数据了
      

  9.   

    可以,简单的c/s结构就可以但是客户端也要bind端口 就可以主动接受服务器程序法送过来的数据了。应该用异步,至于具体如何实现,很多地方有例子。
      

  10.   

    本来就是需要一个socket啊.不过还是自己定义一些包来做好些
      

  11.   

    to 9楼
    不是要补了,是要学。我都不懂的,现在是在抄别人的代码,有些具体的API函数的作用都还没完全弄懂。没空去学,项目追的太急了。
    哪位推荐本这方面的好书???不想看那些外文的,更不想看那些翻译的。
      

  12.   

    windows 网络编程。随便相关的书就可以了。最主要的是多了解一些协议规范什么的。