我做了一个socket多线程的简单程序,代码如下:
UINT ThreadFunction(LPVOID p)
{
ThreadInfo* pInfo=(ThreadInfo*)p;
int DelayTime=pInfo->iDelay ;
CSocketReceive* Socket1;
Socket1=new CSocketReceive;
//Socket1=pInfo->lSocket ;
while (1)
{
Socket1->Create();
Sleep(DelayTime*1000);
}
delete Socket1;
return 0;
}
但运行的时候,在Create 处报错了,但如果用share dll 方式编译则正常,如果作为参数带进去,结果还是一样报错,不知何故,请各位大侠指点
UINT ThreadFunction(LPVOID p)
{
ThreadInfo* pInfo=(ThreadInfo*)p;
int DelayTime=pInfo->iDelay ;
CSocketReceive* Socket1;
Socket1=new CSocketReceive;
//Socket1=pInfo->lSocket ;
while (1)
{
Socket1->Create();
Sleep(DelayTime*1000);
}
delete Socket1;
return 0;
}
但运行的时候,在Create 处报错了,但如果用share dll 方式编译则正常,如果作为参数带进去,结果还是一样报错,不知何故,请各位大侠指点
解决方案 »
- 关于DLL,求指引
- 问一个局域网的问题
- 微软亚洲工程院2006年校园招聘全面启动
- 如何动态改变ListCtrl的列的标题?
- C# 可以编写组件, 还有必要学ATL 吗? 欢迎大家讨论一下
- 那位能给我提供网络IP流量分析及统计功能的源代码,谢谢了!
- GDI函数的BUG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 如何将JPG转化为BMP,它们文件的数据结构是什么
- 关于VC中定时器timeSetEvent的问题
- 系统托盘的提示信息如何自动刷新?
- VC,我的登录界面中有个确定按钮,我想点了之后.......(超级难的问题)
- VC,我的登录界面中有个确定按钮,我想点了之后.......(超级难的问题)
CSocket类吗?
如果是试着在new之前添加代码:
#ifndef _AFXDLL
#define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE
#define _afxSockThreadState AfxGetModuleThreadState()
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
if (pState->m_pmapSocketHandle == NULL)
pState->m_pmapSocketHandle = new CMapPtrToPtr;
if (pState->m_pmapDeadSockets == NULL)
pState->m_pmapDeadSockets = new CMapPtrToPtr;
if (pState->m_plistSocketNotifications == NULL)
pState->m_plistSocketNotifications = new CPtrList;
#endif
while (1)
{
Socket1->Create();
Sleep(DelayTime*1000);
}
http://expert.csdn.net/Expert/topic/1265/1265465.xml?temp=.4131891
chaojibenben(笨笨)的方法应该是没有问题的,不过你在主线程InitInstance中加上if (!AfxSocketInit())
{
AfxMessageBox("Windows 通信端口初始化失败");
return FALSE;
}