关于IdUDPServer1的收到消息问题(50分)

  • 主题发起人 主题发起人 Hacker001
  • 开始时间 开始时间
H

Hacker001

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序里判断IdUDPServer1所发出的数据包是自己出发的数据包
联系QQ:83105550
 
你在数据包加上标识吧?
 
判断IdUDPClient1
如何在程序里用IdUDPServer1控件,判断IdUDPClient1所发出的数据包是自己程序出发的数据包
联系QQ:83105550
 
在数据包上加上标识不行,因为我这个程序是在局域网中,所有计算机都使用的,如果加上了标识,等于没有加..(声明所有计算机都使用本程序)
 
根据ip 或者随即参生 guid 唯一标号 等方法多的很
 
delphfans 可以加我的QQ号码吗?
 
那就在发送的包中加上计算机的ip地址,这样可以容易区分当然包是什么计算机发出的。
就在包中多增加一个本机ip这样一个段。
 
zywcd 好方法,我试试,谢谢你的提示
 
这个问题也许太难了,没有能帮我解决问题
 
晕你定数据协议的时候应该就考虑
不是难的问题
 
这个难吗?你在包中加上ip或者计算机名称之类的,应该很简单啊。
你的包使用的是什么结构?
 
如何我在包后加了IP,IP地址可以这样192.168.0.1或192.168.000.001,这两个IP的长度不同,对方接收我的包时,会接收我的包和IP地址,如何在包尾减去一个不固定长度的IP地址,IP是可变的
 
我这样做过,先定义这样的结构
type
TCommBlock=record // the Communication Block used in both parts (Server+Client)
Command:string[20]; //ÃüÁî
myUserName:string[50]; //·ÖµêÃû³Æ
Msg:string[100];
mm:byte; // name of receiver
end;
var myCommBlock:TCommBlock;

接受:
procedure Tfrmmain.ServerUDPRead(Sender:TObject; AData:TStream;
ABinding:TIdSocketHandle);
begin
AData.ReadBuffer(myCommBlock,SizeOf(myCommBlock));
......
end;

发送:
frmmain.Server.SendBuffer(client_ABinding.PeerIP,client_ABinding.PeerPort,myCommBlock,SizeOf(myCommBlock));

如果使用这样的方式,你还会怕IP地址变好?
 
谢谢你zywcd,我不是用你这样的方法的,我是用:在包的尾部加上本机的IP,收的时候取出包尾的IP(IP如果不足15位的,被我自义函数补上了),如果包尾的IP等于本机的IP..我就是这样判断的.
 
多人接受答案了。
 
zywcd 我没有试过你的方法,不过要谢谢你,你这么努力帮我.谢谢
 
[8D]现在还有一个问题:"如何检测局域网中的计算机使用了本程序"?
"如何检测局域网中的计算机是否联网"?[:D]
 
后退
顶部