小
小娘皮
Unregistered / Unconfirmed
GUEST, unregistred user!
********* C++Builder ****************
在线程的构造函数中生成ClientSocket:
__fastcall TSubTh::TSubTh(bool CreateSuspended)
: TThread(CreateSuspended)
{
//CS在头文件中作为类的全局变量声明
CS = new TClientSocket(0);
CS->ClientType = ctNonBlocking;
CS->OnRead = CSRead;
CS->OnConnect = CSConnect;
CS->Address = "127.0.0.1";
CS->Port = 2020;
}
void __fastcall TSubTh::CSConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("连接成功!");
Socket->SendText("测试");
}
void __fastcall TSubTh::CSRead(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("读数据!");
}
void __fastcall TSubTh::Execute()
{
CS->Open();
//连接
}
以上代码如果放在主Form里,是没有问题的,但放在线程里则不能触发这两个事件,
而服务器端的OnAccept和OnClientConnect事件是能够触发的,表示连接没有问题。
如果CS->ClientType = ctNonBlocking;改为CS->ClientType = ctBlocking;
则可以触发OnConnect事件,而OnRead事件仍然不能触发。请帮忙。很急,500分。
在线程的构造函数中生成ClientSocket:
__fastcall TSubTh::TSubTh(bool CreateSuspended)
: TThread(CreateSuspended)
{
//CS在头文件中作为类的全局变量声明
CS = new TClientSocket(0);
CS->ClientType = ctNonBlocking;
CS->OnRead = CSRead;
CS->OnConnect = CSConnect;
CS->Address = "127.0.0.1";
CS->Port = 2020;
}
void __fastcall TSubTh::CSConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("连接成功!");
Socket->SendText("测试");
}
void __fastcall TSubTh::CSRead(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage("读数据!");
}
void __fastcall TSubTh::Execute()
{
CS->Open();
//连接
}
以上代码如果放在主Form里,是没有问题的,但放在线程里则不能触发这两个事件,
而服务器端的OnAccept和OnClientConnect事件是能够触发的,表示连接没有问题。
如果CS->ClientType = ctNonBlocking;改为CS->ClientType = ctBlocking;
则可以触发OnConnect事件,而OnRead事件仍然不能触发。请帮忙。很急,500分。