读书人

Socket和线程有关问题

发布时间: 2012-03-31 13:13:26 作者: rapoo

Socket和线程问题
我用BCB新建一个控制台应用程序
在程序起来得时候,我new了一个监听线程,用来监听客户端得soctet连接,一但有socket连接,就在该监听线程里new一个处理线程.
我的问题是:在这个监听线程中,我怎么样监听soctet连接?
void __fastcall TListenThread::Execute()
{
SetName();
sock = new TServerSocket(Application);
sock-> Port = m_Port;
sock-> Active = true;

while (!Termiate)
{

}
}
//---------------------------------------
void __fastcall TListenThread::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{

}
这是我在监听线程中的部分代码,肯定是有问题的.OnClientRead事件没办法相应的,各位大哥帮帮我怎么解决?


[解决办法]
?不明白你为什么这样用!
你在主窗体上放一个这样的控件,然后处理相应的事件即可。如果每一个连接都用一个线程处理的话,你只要把ServerType设成stThreadBlocking即可,然后响应处理OnGetThread事件,事件代码如下:
SocketThread = new XServerSocketThread(true,ClientSocket);
SocketThread-> KeepInCache = true;
SocketThread-> FreeOnTerminate = true;
SocketThread-> Resume();
其中类的定义如下,一定要从TServerClientThread派生
class XServerSocketThread:public TServerClientThread

读书人网 >C++ Builder

热点推荐