TServerSocket中ServerType设为线程阻断型后的问题?

netware 2000-08-31 12:49:00
加精
TServerSocket中ServerType设为线程阻断型后,则接受的每一个客户连接的读、写信息都在一个单独的线程中进行,但是我不知道如何让程序调用我写的线程,并且如何在线程中读写TClientSocket发来的数据,(如设为非阻断型可在OnClientRead中读数据)
...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
keikai 2001-07-28
  • 打赏
  • 举报
回复
呵呵,你把那个参数CreateSuspended设置为true就可以了。
当然也可以用另外的办法,你在你的线程里面另外写一个函数
runThread(){
this->ClientExecute();
}
FengSC 2000-08-31
  • 打赏
  • 举报
回复
建立
class TMyThread : public TServerClientThread
{
private: // User declarations
void __fastcall ClientExecute();
public: // User declarations
__fastcall TCommandThread (bool CreateSuspended,
TServerClientWinSocket* ASocket);
}
//---------------------------------------------------------------------------
__fastcall TCommandThread::TCommandThread (bool CreateSuspended,
TServerClientWinSocket* ASocket)
: TServerClientThread( CreateSuspended, ASocket)
{
}
//---------------------------------------------------------------------------

void __fastcall TMyThread::ClientExecute()
{

TWinSocketStream *pStream;
if (Terminated || !ClientSocket->Connected) return;
pStream = new TWinSocketStream(ClientSocket, 6000);
memset(Buffer, 0x00, sizeof(Buffer));
if (pStream->WaitForData(10000))
{
memset(Buffer, 0x00, sizeof(Buffer));
DataLength=pStream->Read(Buffer, 45);
if (DataLength == 0)
{
ClientSocket->Close();
delete (pStream);
return ;
}
}
else
{
ClientSocket->Close();
delete (pStream);
return ;
}
:
:
:
ClientSocket->Close();
delete (pStream);
return;
}

在TServerSocket的OnGetThread 中创建新的线程.
void __fastcall TformMain::MySocketGetThread(TObject *Sender,
TServerClientWinSocket *ClientSocket,
TServerClientThread *&SocketThread)
{
SocketThread = new TMyThread(false, ClientSocket);
}

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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