动态生成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没有执行相关事件!
各位帮忙啊!



...全文
55 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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 的????

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧