自己写了个通信的软件,用MFC的CAsyncSocket。服务器上保存了用户的登录名和密码,每次登录的时候时候如果连接成功会提示“连接成功”,同时会把用户的登录名和密码发送到服务器上进行比对,比对成功的话就弹出一个聊天的对话框。如果是服务器和客户端放在一台机子上就可以通信,但是把另外一个客户端放在其他的机子上,不管密码输入对或是错,或是服务器的IP输入的对与错,都显示连接成功,而且弹不出对话框。为什么???是网络字节序的问题,客户端在不同的机子上的情况,代码是不一样的???网络不是很熟悉,望各位指点。万分感谢

解决方案 »

  1.   

    应该是你的 客户端判断连接成功的地方代码有bug,造成每次都判断成功.
      

  2.   

    客户端的连接代码部分如下:if( m_Csocket.Create() == FALSE ) //创建连接套接字
    {
    AfxMessageBox(_T("创建连接套接字失败"));
    exit(0);
    }
    CString serverIP=changeIPtoCString(); //在客户端的对话框里有一个编辑框是用于填写服务器IP的
    LPCTSTR LserverIP=(LPCTSTR)serverIP;
    UINT serverPort=m_ServerPort;  //用户填写的服务器端口
    if( m_Csocket.Connect(LserverIP,m_ServerPort) == FALSE ) //连接
    {
    int ret = m_Csocket.GetLastError();
     if (ret != WSAEWOULDBLOCK) 
    {
    AfxMessageBox(_T("连接服务器失败!"));
    exit(0);
    }
    }总感觉上面代码有错误,但是就是不知道怎么改。
      

  3.   

    void ClientSocket::OnConnect(int nErrorCode)
    {
    AfxMessageBox(_T("成功连接服务器"));
    //发送用户名和用户密码的结构体消息

    }
      

  4.   

    两边分别通过IDE运行不就可以了