我想做一个聊天室的程序,客户端发消息给服务器,然后服务器把这个消息转发给别的客户端。
现在我的程序 客户端可以发消息给服务器了,服务器是一收到这个消息就把他转发出去吗
为什么我这么做的时候 客户端就开不了了
客户端的WSAAsyncSelect在什么时候调用呢是connect之前还是之后呢?
希望懂的 能替我解答一下

解决方案 »

  1.   

    WSAAsyncSelect(sClient,m_hWnd,WM_SOCKET,FD_CONNECT|FD_READ|FD_WRITE);
    if(connect(sClient,(SOCKADDR*)&seraddr,sizeof(seraddr))==SOCKET_ERROR)
    {
    AfxMessageBox("连接失败");
    return FALSE;
    }
    我在这之前为什么会出现连接失败啊? case FD_CONNECT:
        SetDlgItemText(IDC_EDIT_RECV,"已连接上");     break;
    对话框打开后,又能显示出已连接上?
    这是怎么回事啊?
      

  2.   

    WSAGetLastError ()函数得到错误的编号
    看看为什么连接失败
      

  3.   

    WSAAsyncSelect 之后 你的套接字就是非阻塞的了  connect不管成功与否都会返回, 
    如果返回SOCKET_ERROR,你应该WSAGetLastError()看是不是WSAEWOULDBLOCK错误,
    是的话说明正在连接,连接成功后会触发FD_CONNECT事件;