同一网段内的判断

vc_pioneer 2005-08-05 03:43:30
通过UDP方式给一制定IP地址的机器发包.如果当前IP无法连通,就改用TCP方式中转连接.现在我如何能快速知道我所需要发送的机器IP,通过UDP无法连接.??
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckyboy97 2005-08-08
  • 打赏
  • 举报
回复
关注
wizardqi 2005-08-08
  • 打赏
  • 举报
回复
我相信你要实现的功能肯定有客户端支持,所以你可以在客户端用UDP绑定一个端口,当收到询问IP时
就把自己的IP和机器名返回,而服务器端使用UPD向A.B.C.255(其中A.B.C是服务器端的IP地址头三个字节,比如192.168.0.2=>192.168.0.255)+客户端用绑定的端口发IP询问,有回应的肯定都是本网端内.
然后使用TCP连接对应的IP就行了.
constantine 2005-08-08
  • 打赏
  • 举报
回复
SendARP将对方ip转为mac地址,他的局限就是要在同一网段
至于要知道用udp是不是能够联通一个ip,这个发送一些不就知道了吗,可以等待ack,或是timeout
Cassava 2005-08-08
  • 打赏
  • 举报
回复
A send to B
A等待1秒
B收到了则Send to A
如果1秒过去了还没有收到B Send to A那么UDP无法连接
helodd 2005-08-06
  • 打赏
  • 举报
回复
能ping 通并不说明是在同一网段呀, 网关有路由是可以ping 通的. 只能说明你们之间是否能连接. 在同一网段对能否连接是没有任何的意义的. 是否在同一网段你只能是通过IP与掩码来判断的了~~~或者通过发送广播消息,对方是否收到来说明在同一网段内~~
阿呆_ 2005-08-05
  • 打赏
  • 举报
回复
因为UDP并不检测发送的数据对方是否收到. SendTo成功只说明数据成功复制到了发送缓冲区. 因此只能通过等待对方回应包来判断, 自己判断一下接收是否超时, 如果在一段时间内未收到回应说明连不通. 因为是同一网段, 所以超时的判断时间可以设得短一点(比如1秒)
hyg2008 2005-08-05
  • 打赏
  • 举报
回复
先根据机器名在网内找这个机器.....

如果别人有防火墙呢?
hqhhh 2005-08-05
  • 打赏
  • 举报
回复
先根据机器名在网内找这个机器,如果找不到,则就不在此网段内!
hyg2008 2005-08-05
  • 打赏
  • 举报
回复
发一个回复一个,收不到回复就表示无法连接。

1,593

社区成员

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

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