关于Indy IdUDPClient控件的使用... (100分)

  • 主题发起人 主题发起人 gydsj
  • 开始时间 开始时间
G

gydsj

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠,如何通过使用UDP协议使一台上网的机子如何
发送消息到另外一台通过局域网上网的机子.
 
如果你用INDY的组件,

IdUDPClient向指定IP及指定端口发消息

该接收方要有程序接收,用IdUDPServer控件即可
 
to wwolf:
我用的IdUDPClient控件能在局域网里互发消息,也能在两台拨号上网的机子上互发.
通过局域网上网的A机子发给拨号上网的B机子的消息是能收到的,也能收到A机子的IP(这个
IP是局域网主机的IP).反过来B机子给A机子发消息,是不能收到的,因为这时B机子给A机子发
消息的IP地址是A机子所在局域网的主机IP,所以不能收到B机子的消息.但这个问题如何解决
还请帮下忙.
 
通过局域网上网的A机,是通过代理服务器上网还是NAT映射?
按UDP的机制应该是不可能由B机发到A机的。但你一定会说QQ可以
是啊,QQ是通过UDP&TCP绑定的。如果你要由B机发消息给A机,
一种方法用TCP建立边接,由TCP传数据。
另一种方法就是学QQ的做法。
就是说,如果要从外面传消息进里面去,就一定要里面先和外面取得联系后方可
 
如果按QQ的方法来实现的话,是不是要先用TCP进行两台机子的连接.再进行通信.如果这样的
话,我要与多个好友互相通信,就必须建立TCP的Server.让好友与TCP保持连接.同样好友也要
建立TCP的Server让我与他们连接保持连接.这样会不会消耗大量的资源.
 
是啊,如果是可以直连的就不需要了。如果没办法的,只好用TCP连到SERVER上去。
 
UDP&TCP绑定是什么意思阿
 
新的问题出来了.如果在同一个局域网上,有两台机子要互相通信.他们的IP都是局域网上主
机的IP.这样他们是不能通信的.QQ又是如何做到的呢??
 
如果两个IP都是局域网上主机的IP,表示他们在一个局域网里,
但是他们在服务器上映射的端口一定是一同的。

假设A在服务器上映射的端口是5555,B的是6666
A要给B发,只要往服务器的6666发,就可以传到B上,同理B给A发,则是往5555上发。

所以我们常在QQ上传文件时,同一个局域网(包括校园网)内传的速度是暴快的。
 
好像不行.我的A机和B机假设都是202.12.0.122(局域网上网的IP),端口分别是1027和1028.
这样的话.不管A机发给B机,还是B机发给A机,都是有错误的.但是如果你把A机上的程序在局域
网的主机运行的话,B机能给A机通信.
 
有没有tcp&udp绑定?
 
怎么绑定.能具体说清楚点的吗??
 
具体代码我现在没有,你可以去查询相关资料。sorry
 
我查了好久都没有查到,可能是查找的方式不对.不过我有一个新的想法就是,同时取A和B
的上网IP和本机IP.如果上网IP一样的话,就通过本机IP互相通信,不知这想做法可不可靠?
 
可以,但有一个前提:在同一个网内。不同局域网是不行的,一定要绑定
你可以分成几种情况:
1.双方在一个局域网内
2.双方都有internatIP
3.其中一方在局域网内,另一方有internatIP
4.双方都在不同的局域网内

QQ中有的服务是只向会员开放的,会员是要收费的。我认为是根那些服务要
占用更多的服务器资源有关。呵呵,具体的还是要腾讯的人才知道。
 
那按你的意思就是只有绑定才是最好的解决方法.
你有如何绑定这方面的资料吗???
 
也不一定要绑定啦,看你的东西是打算用来干嘛的?
 
indy控件组里有一个IP映射的控件可能对你有用。
 
想做一个类似于QQ的东西.
是否TIdIPWatch控件??如何使用呢???
 
QQ。。。。。。无语

 

Similar threads

回复
0
查看
848
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
后退
顶部