动态生成ClientSocket的问题

fromv 2003-06-29 12:26:03

已经定义了
void __fastcall ClientServiceRead(TObject *Sender,TCustomWinSocket *Socket);
void __fastcall ClientServiceConnect(TObject *Sender,TCustomWinSocket *Socket);
void __fastcall ClientServiceDisConnect(TObject *Sender,TCustomWinSocket *Socket);
void __fastcall ClientServiceError(TObject *Sender,TCustomWinSocket,TErrorEvent ErrorEvent,int &ErrorCode);
};作为ClientSocket的公共处理函数。

程序中动态生成了多个ClientSocket,利用TList来管理
TList *SocketList = new TList;
TClientSocket *ClientSkt = new TClientSocket(this);
ClientSkt->Name.sprintf("ClientSocket%d",i+1);
ClientSkt->Address = "168.168.0.3";
ClientSkt->Port = 1234;
SocketList->Add(ClientSkt);

我想在动态生成的ClientSocket在调用Open()方法后共享定义好的事件,
ClientSkt->OnConnect = ClientServiceConnect;
ClientSkt->OnError = ClientServiceError;
ClientSkt->OnDisconnect = ClientServiceDisconnect;
ClientSkt->OnRead = ClientServiceRead;
ClientSkt->OPen();
但是动态生成的ClientSocket没有执行相关事件!
各位帮忙啊!



...全文
6 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcchm 2003-07-01
同意 BCB(天下三分明月夜,二分无赖是扬州)
回复
HUANG_JH 2003-07-01
ClientSkt->OnConnect = ClientServiceConnect;
ClientSkt->OnError = ClientServiceError;
ClientSkt->OnDisconnect = ClientServiceDisconnect;
ClientSkt->OnRead = ClientServiceRead;
这样写,没有错,我就是这么用的
回复
HUANG_JH 2003-07-01
查一查以前的贴子吧,我都贴了好多次了
回复
fromv 2003-06-30
to pp616(傻小子):
如果使用_beginthread来创建线程上面的代码怎么改?
回复
pp616 2003-06-30
那直接给事件处理函数赋值就好了啊。
回复
fromv 2003-06-30
to HUANG_JH(保卫钓鱼岛):当然作用域写好了,不然编译会出错。
回复
HUANG_JH 2003-06-30
作用域的问题??
void __fastcall YourClass::ClientServiceRead();
void __fastcall YourClass::ClientServiceConnect();
void __fastcall YourClass::ClientServiceDisConnect();
void __fastcall YourClass::ClientServiceError();

YourClass为你
TClientSocket *ClientSkt = new TClientSocket(this);
所在的类

回复
BCB 2003-06-30
事件是静态定义的,手工键入太费力,简单的办法是
先在窗体上放一个SOCKET控件,将事件生成好,并在内先填上一
些注释,然后再去除掉此控件,事件就生成好了,
new出的各个控件的事件属性指向这些静态的事件就可以了
回复
fromv 2003-06-30
不是在线程里。没有使用线程。
回复
yuanhen 2003-06-29

是不是动态生成的ClientSkt的Active为false???

回复
pp616 2003-06-29
很关键的问题。你是在什么地方new的ClientSocket 如果在线程里面那你就是白费了。
是否是TThread类里new 的????
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告