ClientSocket 应用于多线程的问题。

cwl999 2008-09-05 07:58:19
做一个测试软件模拟多个客户端连接到服务器端,客户端采用多线程处理方式。
实现方式 :在线程中定义TClientSocket * FClientSocket;
TWinSocketStream* FSocketStream;
unsigned char FAcceptBuff[500];
unsigned char FSendBuff[200];
线程构造函数中初始化上面的对象
{
FClientSocket = new TClientSocket(NULL); //
FSocketStream = new TWinSocketStream(FClientSocket,1000);
memset(FAcceptBuff,00,500);
memset(FSendBuff,00,200);
FClientSocket ... 设置阻赛,端口,主IP,并打开连接

}

在OnExecute 中
while ((!Terminated)&& FClientSocket->Active)
{
Sleep(30);
if (FSocketStream->WaitForData(100))
{
//---------------问题出现在下面
/* 如果创建一个线程正常,如果创建多个线程则出现
... read error 64,指定的网络名不再可用。 ...
查找相关内容是说相关连接已经关闭。
各位大侠帮忙解释一下,什么原因,如何造成的,如何解决呢??
*/

RecvLen = FSocketStream->Read(FAcceptBuff,500);

//----------------
if ( RecvLen > 0)
{
FAcceptDataCount++; //计数
ReadSocket(FAcceptBuff,RecvLen); //接收缓冲区处理缓冲区数据

FMessage.LParamHi = FAcceptDataCount; //消息通知主线程
FMessage.LParamLo = FSendDataCount;
PostMessage(FMainHandle,CCMESSAGE,(unsigned int)FThreadID,FMessage.LParam);
}
}
}

/* 如果创建一个线程正常,如果创建多个线程则出现
... read error 64,指定的网络名不再可用。 ...
查找相关内容是说相关连接已经关闭。
各位大侠帮忙解释一下,什么原因,如何造成的,如何解决呢??
*/
...全文
72 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2008-09-05
  • 打赏
  • 举报
回复
服务是你自己的吗?有可能是服务器设置了同一IP只允许一个连接。

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧