在vc++6 中创建一个对话框的应用程序。
将WSAStartup函数放在CMyApp类中执行,然后把socket放在CMyDlg类中执行,运行时socket函数总是返回INVALID_SOCKET。
如下:
m_SockClient=socket(AF_INET,SOCK_STREAM,0);
if(INVALID_SOCKET==m_SockClient)
{
AfxMessageBox("套接字打开失败!");
return false;
}但是将CMyApp类中的WSAStartup部分拷贝到CMyDlg类中,执行时确一切正常。
请问是什么原因?

解决方案 »

  1.   

    楼上正解,WSAStartup 和 socket放哪里执行是没有关系的
      

  2.   

    跟踪一下代码执行顺序。 是否WSAStartup没有被执行,就执行了 socket .还有可以WSAGetLastError取错误看看是倒底怎么回事.
      

  3.   

    看看你把WSAStartup放在哪了,通常应该放在CMyApp::InitInstance里面,构造对话框类的前面。
      

  4.   

    可以在程序启动位置就执行
    WSAStartup
    这个必须最先运行,才能跑socket