求一个动态生成UDPServer并且UDPRead能够监听的例子。

微笑的水 2011-03-02 04:02:14
各位老师好,小弟在学习INDY,想做一个类似QQ那样的局网通信软件。
就是生成一个在线列表,双击图标之后,生成一个窗口能够互传信息。
并且能够同时和多个人说话,只要是1对1就行。于是想动态生成UDPServer,其他部分完成,
可是在端口监听部分出现了问题。UDPRead不执行。
我的代码片段。。。


TMyUDP=class(TComponent)//定义个对象,事件和udpread一样。我觉得这里有问题
public
procedure myUDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
end;

TFchat = class(TForm)
_do: TADOQuery;
L3: TLabel;
........
private
{ Private declarations }
_userID, _myID , _name, _myIP, _objIP, _chatSession: string;
_objport, _myport : integer; //目标端口
public
{ Public declarations }
end;

var
Fchat: TFchat;
testPort: TServerSocket;
UDPS : TIdUDPServer;
myUDPServer : TMyUDP;

procedure TFchat.FormShow(Sender: TObject);
var filename, _sql, _now: string;
begin
..........
_myip := NameToIP(GetHostName);//获取本机IP
_objip := _do.Fields[0].AsString;//从数据库取目标ip,之前的sql语句我删除了
UDPS := TIdUDPServer.Create(nil);//生成udp
myUDPServer := TmyUDP.Create(nil);
UDPS.Bindings.Clear;
UDPS.Bindings.Add.IP := NameToIP(GetHostName);
UDPS.DefaultPort := _myport;
UDPS.OnUDPRead := myUDPServer.myUDPRead;
UDPS.Active := true;
PortCaption.Caption := '当前IP : '+_myip +' 使用端口: ' + inttostr(_myport) + ' 对方IP:'+_objIP+'对方端口:'+inttostr(_objPort);
Chat.Clear;
Msg.SetFocus;
end;

procedure TMyUDP.myUDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
var theMessage, appMessage:string;
getMessage:TStringList;
begin
theMessage := BytesToString(AData);
if theMessage <> '' then begin
getMessage := TStringList.Create;
ExtractStrings(['|'], [' '], pchar(theMessage), getMessage);
if getMessage[0] = 'Msg' then begin
Fchat.Chat.SelAttributes.Color := clBlack;
Fchat.Chat.SelAttributes.Size := 11;
Fchat.Chat.SelAttributes.Name := '宋体';
Fchat.Chat.Lines.Append(getMessage[1]);
end;
getMessage.Free;
end;
end;


琢磨了很久,百度也没有解决。于是来这里请教各位老师,帮我指点一下。
能有代码例子更是感激。
我的QQ 49987968
...全文
332 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
微笑的水 2011-03-05
  • 打赏
  • 举报
回复
问题搞定了。
微笑的水 2011-03-02
  • 打赏
  • 举报
回复
好啊,楼上的朋友,加我的QQ吧,一起研究。
snake11am 2011-03-02
  • 打赏
  • 举报
回复
lz还在啊?可以详谈一下么。。。 我最近也在做这个
微笑的水 2011-03-02
  • 打赏
  • 举报
回复
顶起,请好友们帮帮忙
谢谢。
微笑的水 2011-03-02
  • 打赏
  • 举报
回复
你好。我现在的问题 是 udp 发出的消息, read不到,
我在ide里逐步执行,发现TMyUDP.myUDPRead 没有执行过
bdmh 2011-03-02
  • 打赏
  • 举报
回复
你现在有什么问题呢
内容概要:本文介绍了基于ExtendSim软件构建的儿童保护模拟分析模型,旨在通过仿真技术评估不同工作包(Work Package)对儿童保护系统长期影响的效果。该模型自2014年起由澳大利亚某政府部门与Insight Acumen合作开发,用于支持政策决策,特别是在区域层面测试干预措施的实施效果。模型利用约数十万条历史数据自动生成概率分布(PD),模拟儿童在不同年龄、原住民身份、地区、初次或再次进入系统等条件下的路径发展。随着时间演进,模型经历了多次结构优化,从最初的7个区域调整为5个再扩展至6个,并实现了高度自动化,能够自动导入Excel原始数据并借助ModL编程语言完成初始化计算,显著提升了效率。目前模型每年提供74项关键指标输出,所有分析均由部门内部人员操作执行,大幅节省了人力成本并提高了测试与分析的有效性。; 适合人群:具备数据分析、系统建模背景,从事公共政策研究、社会服务管理或儿童福利领域的政府工作人员及咨询顾问。; 使用场景及目标:①评估儿童保护政策在不同区域和时间段的实施效果;②优化资源配置与工作包部署策略;③预测未来10-15年儿童保护系统的负荷与发展趋势;④提升政府部门在复杂社会系统中的决策科学性与响应效率。; 阅读建议:本模型强调实际应用与持续迭代,建议读者关注其数据自动化处理机制、ModL编程实现方式以及多维度概率建模方法,在复用时结合本地化数据结构进行适配与验证。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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