我建立了一个线程: UINT ScanPort(LPVOID pParam);
如下:
UINT ScanPort(LPVOID pParam) // <注: 编译一切真确>
{
CSocket sock;
if(!sock.Create()) // 运行程序时,这句为什么不能通过??
{ // 而这句不用多线程则没问题! AfxMessageBox("Can't create socket !"); return 0;
}
if(!sock.Connect(address, port))
{
AfxMessageBox("fail to connect !"); return 0;
}
sock.Close(); return 0;
}
// 有劳各位,给分了。
如下:
UINT ScanPort(LPVOID pParam) // <注: 编译一切真确>
{
CSocket sock;
if(!sock.Create()) // 运行程序时,这句为什么不能通过??
{ // 而这句不用多线程则没问题! AfxMessageBox("Can't create socket !"); return 0;
}
if(!sock.Connect(address, port))
{
AfxMessageBox("fail to connect !"); return 0;
}
sock.Close(); return 0;
}
// 有劳各位,给分了。
2. 我在程序主函数的InitInstance中初始化sock:
AfxSocketInit();
------------------------------------------------------------
To yanhuahui(小辉)
有一个"connect"按钮控件,我按下他时就调用此线程:
void OnConnect()
{
AfxBeginThread(ScanPort, NULL);
}
CSocket* sock;
if(!sock->Create())
{
delete sock;
return;
}
else
{
//do something;
sock->close();
}
delete sock;
return;
{ // 而这句不用多线程则没问题!
//添加 int nLen = GetLastError();看看是什么错误
AfxMessageBox("Can't create socket !"); return 0;
}
可以在多线程中传递Socket的句柄,达到目的.