m_pUserSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(m_pUserSocket == INVALID_SOCKET)
{
AfxMessageBox("socket ·ÖÅäʧ°Ü!");
return;
} m_saUserSock.sin_family = AF_INET;
m_saUserSock.sin_port = htons(USERPORT);//USERPORT = 2000
m_saUserSock.sin_addr.s_addr = inet_addr("127.0.0.1"); int iSuccess;
iSuccess = bind(m_pUserSocket, (struct sockaddr *)&m_saUserSock, sizeof(m_saUserSock));
if(iSuccess == SOCKET_ERROR)
{
AfxMessageBox("sokcetµØÖ·°ó¶¨Ê§°Ü!");
return;
} struct sockaddr_in saddr; saddr.sin_family = AF_INET;
saddr.sin_port = htonl(SERVERPORT);//SERVERPOTR = 1999
saddr.sin_addr.s_addr = inet_addr("127.0.0.1"); if(connect(m_pUserSocket, (struct sockaddr *)&saddr, sizeof(saddr)) == SOCKET_ERROR)
{
AfxMessageBox("连接失败!");
         }为什么连接总是失败呢?这是客户端的代码,服务器端没有问题请各位大虾帮忙!!!!!!!

解决方案 »

  1.   

    struct sockaddr_in saddr;
    // 加上下面memset这句
    memset (&saddr, 0, sizeof (saddr)); saddr.sin_family = AF_INET;
    saddr.sin_port = htonl(SERVERPORT);//SERVERPOTR = 1999
                              ~~~~~这儿应该是htons不是htonl
    saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
      

  2.   


    m_saUserSock.sin_family = AF_INET;
    m_saUserSock.sin_port = htons(USERPORT);//USERPORT = 1999 改动
    m_saUserSock.sin_addr.s_addr = INADDR_ANY ;//改动
      

  3.   

    应该是:
    m_saUserSock.sin_port = htons(USERPORT);<---改成这样
    m_saUserSock.sin_addr.s_addr = INADDR_ANY;
    你的"127.0.0.1"怎么能够从主机续转为网络续呢??
    同意楼上的意见.
      

  4.   

    如果你不是inter的机器可能可以!但是如果你不是!那就要htonl!不过这样的问题你应该吧lasterrno打出来!然后查询msdn!搞定
      

  5.   

    比较奇怪,为什么要BIND呢?难道是安全的原因?