ServerSocket 多线程方式, ClientExecute()函数里面的代码不能触发
bahic 2010-06-26 09:53:19 最近学习ServerSocket的 stThreadBlocking方式编程
也看了网上的一些代码,感觉主要流程都差不多,我也试着写了一个最基本的。
但居然不知道怎么读写数据!
我的源码大致以下:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TServerSocket *ServerSocket1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall ServerSocket1GetThread(TObject *Sender, TServerClientWinSocket *ClientSocket,
TServerClientThread *&SocketThread);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
class SrvThread : public TServerClientThread //自定义线程类
{
private:
UINT FTimeOut;
TWinSocketStream* WskStream;
TThread *pThread;
protected:
void __fastcall ClientExecute(void); //重载TServerClientThread的ClientExecute 而不是TThread的Execute
public:
__fastcall SrvThread(bool CreateSuspended,TServerClientWinSocket* ASocket):TServerClientThread(CreateSuspended,ASocket)
{
CreateSuspended = false; KeepInCache=true; FreeOnTerminate=false;
}
__property UINT TimeOut = {read=FTimeOut, write=FTimeOut};
};
//上面是.H文件
//------------------------------------------------------------------------------------------
CPP文件以下:
void __fastcall TForm1::ServerSocket1GetThread(TObject *Sender, TServerClientWinSocket *ClientSocket,TServerClientThread *&SocketThread)
{
SocketThread = new SrvThread(true,ClientSocket); //在此设断点,每次客户端一连接,都能断下来。
}
//---------------------------------------------------------------------------
void __fastcall SrvThread::ClientExecute()
{
ShowMessage(L"dasfadsfasdf"); //在此设断点,从来没断下来过。
}
/*
我的编程环境:BDS2009
现在我的问题是: 我看网上许多文章都说连接上后,只要客户端发送数据,都会触发此函数。但为什么我从来没断下
来过?
ServerType=stThreadBlocking 这个我设置正确了的。
原来用stNonBlocking方式,写的几个小程序都能正常运行,但stThreadBlocking这种方式不是很清楚,也没找到相关源码,
哪位老大如果有这方面的源代码,希望能发给我看看,不要贴代码,我想要源码,这样我才能跟踪分析一下。谢谢了。
邮箱: bahic@163.com
*/