您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 高手请赐教:为什么服务里面创建Socket老是出错?

高手请赐教:为什么服务里面创建Socket老是出错?

来源:网络整理     时间:2016/8/26 21:52:38     关键词:

关于网友提出的“ 高手请赐教:为什么服务里面创建Socket老是出错?”问题疑问,本网通过在网上对“ 高手请赐教:为什么服务里面创建Socket老是出错?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 高手请赐教:为什么服务里面创建Socket老是出错?
描述:

我用ATL向导写了一个简单的服务,在Run里面想创建一个Socket监听客户端的连接,但是为什么调用PtListenSocket->Create(nPortNo)的时候老师弹出assert错呢?
我跟了一下,错误是在AfxGetInstanceHandle()返回的句柄为NULL。
我把同样的代码放到一个一般的MFC的程序中就没有任何问题。急啊!请高手帮帮我,在线等待。谢谢。
CSvrListenSocket *PtListenSocket;
void CServiceModule::Run()
{
    _Module.dwThreadID = GetCurrentThreadId();
    HRESULT hr = CoInitialize(NULL);
//  If you are running on NT 4.0 or higher you can use the following call
//  instead to make the EXE free threaded.
//  This means that calls come in on a random RPC thread
//  HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
    _ASSERTE(SUCCEEDED(hr));
    // This provides a NULL DACL which will allow access to everyone.
    CSecurityDescriptor sd;
    sd.InitializeFromThreadToken();
    hr = CoInitializeSecurity(sd, -1, NULL, NULL,
        RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
    _ASSERTE(SUCCEEDED(hr));
    hr = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, REGCLS_MULTIPLEUSE);
    _ASSERTE(SUCCEEDED(hr));
    LogEvent(_T("Service started"));
    if (m_bService)
        SetServiceStatus(SERVICE_RUNNING);
    int  nPortNo=12345;
    if (!AfxSocketInit())
        return ;
    
    AfxSocketInit();
    PtListenSocket = new CSvrListenSocket();
    //12345:端口号
    //服务器端口号:5000---65536
    if(PtListenSocket->Create(nPortNo))
{//开始侦听
if(PtListenSocket->Listen())
{
bReady=TRUE;
}
}
    MSG msg;
    while (GetMessage(&msg, 0, 0, 0))
        DispatchMessage(&msg);
    _Module.RevokeClassObjects();
    CoUninitialize();
}


解决方案1:

WSAStartup了没有?

解决方案2:

不能用了。用api多好啊!

解决方案3:

不要用mfc的类了.
使用socket api函数吧.


以上介绍了“ 高手请赐教:为什么服务里面创建Socket老是出错?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3617124.html

相关图片

相关文章