求教一个Indy的UDPServer的问题

春风老少年 2014-02-22 01:07:02
要做一个UDP通讯的简单的小程序,需要同时开多个端口进行通讯,就是类似开1、2号端口向下位机发送数据,开3、4号端口监听下位机发上来的数据,界面就是简单的几个控件:两个CheckBox控件,选中的时候分别创建线程,取消选中的时候销毁线程,4个EDIT框,2个填端口号,2个填数据。一共两组,一组做数据发送,一组做数据接收,于是想用多线程做。
我建了个线程类ThrdUDP,里面建了一个TIdUdpServer控件的对象变量m_Udp和TIdIpWatch的对象变量m_IP(用于获得本机IP),自己写了个回调函数UdpRead({参数省略,和UDPServer的OnUdpRead一样}),线程类Create的时候创建并设置好了m_Udp/m_IP的各属性,但是UdpRead没有响应,已经设置m_Udp.OnUdpRead := UdpRead;,但没有响应,请问是怎么回事,该怎么弄?接收数据的线程里的Excute方法中我写的代码是这样的:
FreeOnTerminate := True;
while not terminated do begin
//....
end;
这里面注释的部分该如何调用UDPREAD方法?
还有,我在线程类ThrdUDP析构函数里释放那两个成员变量:
procedure ThrdUDP.Destroy;
begin
m_Udp.Free;
m_IP.Free;
Inherited;
end;
但是每次到Inherited的时候就报非法访问错误,请问是怎么回事?
谢谢!!!
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathletboy 2014-02-22
  • 打赏
  • 举报
回复
FreeOnTerminate 设置为True后,就不要主动Free,你检查下你是否调用Free了。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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