本帖最后由 VisualEleven 于 2012-10-19 21:11:41 编辑

解决方案 »

  1.   

    winsock函数的调用的返回值一般是与SOCKET_ERROR比较,SOCKET_ERROR的记得好像是-1吧
      

  2.   

    对,,SOCKET_ERROR是-1,但是这就表示连不上吧,为什么连不上啊?
      

  3.   

    用DWORD dwError = WSAGetLastError();后得dwError为10038
      

  4.   

    如果我把创建套接字的SOCKET m_SockClient =socket(AF_INET,SOCK_STREAM,0);前面的SOCKET删掉得到的错误就是10051,晕啊,这是怎么回事啊?
      

  5.   

    10038: An operation was attempted on something that is not a socket.
    你的SOCKET句柄不对吧,你调用WSAStartup函数没有?
      

  6.   

    介个可能的原因的有两个,一个是楼上说的,还有一种可能就是,没调socket创建套接字,当然还可能是创建后,该套接字名柄被赋于了一个非法值。元芳,你怎么看?
      

  7.   

    WSAStartup  少这个  
      

  8.   

    是的,我之前发现这个问题了,改之后的错误是10051,网上查是CListBox的句柄为空,因为此时还没有创建窗口,当然ListBox也没有创建。我在之前加    CDialog::OnInitDialog(); 也不对,该怎么改呢?
      

  9.   

    是的,我之前发现这个问题了,改之后的错误是10051,网上查是CListBox的句柄为空,因为此时还没有创建窗口,当然ListBox也没有创建。我在之前加    CDialog::OnInitDialog(); 也不对,该怎么改呢?
      

  10.   

    是的,我之前发现这个问题了,改之后的错误是10051,网上查是CListBox的句柄为空,因为此时还没有创建窗口,当然ListBox也没有创建。我在之前加    CDialog::OnInitDialog(); 也不对,该怎么改呢?
      

  11.   

    不知道是不是m_SockClient变量没创建套接字