一个服务程序,在线程加入提供网络服务,使用控制台程序,程序不会出错    
  WSADATA wsaData;
int wsaret=WSAStartup(MAKEWORD(2,2),&wsaData);
if(wsaret!=0)
{//此处不报错
return ;
}

sockaddr_in local; local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_port=htons((u_short)20248);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
{
             //到此处报10093的错误

解决方案 »

  1.   

    10093:应用程序没有调用 WSAStartup,或者 WSAStartup 失败。 
      

  2.   

    WSAStartup在同一个线程中调用成功了,接下来就是socket调用,怎么会出现10093呢?
      

  3.   

    服务程序权限更高,也会运行在session0,注意这些跟普通应用程序的区别
      

  4.   

    sockaddr_in addr;
    addr.sin_family=AF_INET;
    addr.sin_addr.S_un.S_addr=INADDR_ANY;
    addr.sin_port=htons(4000); 
    m_hSocket=socket(AF_INET,SOCK_STREAM,0);
      

  5.   

    local.sin_addr.s_addr=INADDR_ANY;
    local.sin_addr.S_un.S_addr=INADDR_ANY;  改成这句了
      

  6.   

    bool InitWinSocket()
    {
    WSADATA wsd;
    if ( 0 != WSAStartup(MAKEWORD(2,2), &wsd) )
    {
    return false;
    }
    if ( 2 == LOBYTE(wsd.wVersion) && 2 == HIBYTE(wsd.wVersion) )
    {
    return true;
    }
    return false;
    }
    wsd的版本信息如果不是2.2的话,WSAStartup还是失败的。
      

  7.   

    试过了 可以确定WSAStartup()初始化正确 不解为何出现错误
      

  8.   

    重新建个工程,在下一步的时候选择 windows socket  
      

  9.   

    创建的是系统服务程序,没有使用MFC,应该是服务程序对网络这一块有特殊的要求,我感觉,因为同样的代码在非服务程序上运行是不出错的
      

  10.   

    WSAStartup()初始化,放在main函数的开始阶段,调试成功了 
    刚开始放在线程中初始化的,怎么调试也不行,但提示是WSAStartup
    调试成功,怀疑是在系统服务程序中线程的问题,某些东西没有搞明白。
      

  11.   

    WSAStartup放在线程函数所属的主线程(进程中)定义,在主线程(进程)结束时再释放。WSAStartup实际上是加载DLL。