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