关于TCP/IP阻塞模式下的多线程连接(客户端)解决思路
关于TCP/IP阻塞模式下的多线程连接(客户端)
客户端程序,基于TCP/IP阻塞模式
连接服务器,代码如下:
HANDLE hThread;
hThread = CreateThread(NULL,0,ThreadLINK,(LPVOID)LINKPORT,0,NULL);
Sleep(4000);
CloseHandle(hThread);
ThreadLINK函数中就包含connect函数
当Sleep很短的时间的时候,就连接不上服务器,但当时间很长的时候界面就无法响应其他消息(和不创建线程连接一样了),请问线程到底该怎么写??
------解决方案--------------------
不创建线程,直接等可以吗?
------解决方案--------------------
楼主是把主线程SLEEP了么?SLEEP时间长主界面当然没法响应其他消息了
主线程SLEEP时间短,肯定TCP连接刚刚连上(或者没连上)就已经被CLOSEHANDLE()了
我不太明白你为什么刚刚创建一个线程,连接一下,就要CLOSEHANDLE啊?
没有循环语句什么的吗?
------解决方案--------------------
看来问题是出在了
Sleep(4000);
上了
------解决方案--------------------
你将主线程即UI线程Sleep了,当然不响应了。在主线程中不要Sleep,定义一个消息,当ThreadLINK
的conncet完成后就向窗口发消息,这样你就知道他是已经连接上了。或者直接用WSAAsyncSelect
客户端程序,基于TCP/IP阻塞模式
连接服务器,代码如下:
HANDLE hThread;
hThread = CreateThread(NULL,0,ThreadLINK,(LPVOID)LINKPORT,0,NULL);
Sleep(4000);
CloseHandle(hThread);
ThreadLINK函数中就包含connect函数
当Sleep很短的时间的时候,就连接不上服务器,但当时间很长的时候界面就无法响应其他消息(和不创建线程连接一样了),请问线程到底该怎么写??
------解决方案--------------------
不创建线程,直接等可以吗?
------解决方案--------------------
楼主是把主线程SLEEP了么?SLEEP时间长主界面当然没法响应其他消息了
主线程SLEEP时间短,肯定TCP连接刚刚连上(或者没连上)就已经被CLOSEHANDLE()了
我不太明白你为什么刚刚创建一个线程,连接一下,就要CLOSEHANDLE啊?
没有循环语句什么的吗?
------解决方案--------------------
看来问题是出在了
Sleep(4000);
上了
------解决方案--------------------
你将主线程即UI线程Sleep了,当然不响应了。在主线程中不要Sleep,定义一个消息,当ThreadLINK
的conncet完成后就向窗口发消息,这样你就知道他是已经连接上了。或者直接用WSAAsyncSelect