void CMyDlgDlg::OnBnClickedConnect()
{      if(MySocket.Create())
       {
          if(MySocket.m_hSocket == INVALID_SOCKET)
nError = GetLastError()
if(MySocket.Connect(m_IpAddr,m_port))
{
MySocket.IsConnect = TRUE;
MessageBox("连接成功",MB_OK);
}
       }
}为什么我调用Create()的时候得到的MySocket.m_hSocket的值为4294967295啊,这应该是一个无效的套接口吧,WSAStartup()函数已经调用过,各位大侠,请帮小弟分下下,这是什么问题?

解决方案 »

  1.   

    但是我在Send的时候得到WSAENOTSOCK(在一个非套接字上尝试了一个操作)这个错误,这个怎么解释?补充一下:MySocket是CSocket派生类的一个实例,谢谢回答。
      

  2.   

    //创建客户端套接字
    m_psockClient = new CClientSocket(this);
    if(!m_psockClient->Create())
    {
    delete m_psockClient;
    m_psockClient = NULL;
    MessageBox("套接字创建失败");
    return ;
    } //与服务器建立连接
    GetDlgItem(IDC_IPADDRESS1)->GetWindowText(strIPAddress);
    if(!m_psockClient->Connect(strIPAddress, m_wPort))
    {
    delete m_psockClient;
    m_psockClient = NULL;
    MessageBox("连接失败");
    return ;
    }
    else
    {
    GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);
    GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
    GetDlgItem(IDC_IPADDRESS1)->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);
    } //初始化套接字
    m_psockClient->Init();
    记得初始化 套接字
      

  3.   

    MySocket.m_hSocket的值为4294967295,其实就是INVALID_SOCKET,就是没有Create成功,把你的真正代码贴出来看看
      

  4.   

    这个我也想过,但Create()函数的返回值要么为0,也就是INVALID_SOCKET,要么为非0的值,所以得到4294967295时,用if(Create())判断不出来。我现在想问一下,什么样的套接口号才算无效的。
      

  5.   

     GetLastError()
    报什么错误啊!
      

  6.   

    同上,WSAStartup()调用成功没有?如果成功,看看WSAGetLastError()的返回值是什么...
      

  7.   

    WSAStartup()函数肯定成功,根本无法调用GetLastError();