免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kingjwj
打印 上一主题 下一主题

请教:网络通讯中如何知道对方是否处于活跃状态? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-11-02 15:53 |只看该作者
如果外网想要主动连接内网,可以在路由器上弄个端口映射

论坛徽章:
0
12 [报告]
发表于 2006-11-03 09:31 |只看该作者
通过看一些资料,关于内网(局域网IP,通过网关代理上网)外网(外部独立静态IP)的通讯(在这里不考虑在路由器上作端口映射):外网是无法主动连接内网的,即不能主动发起通讯;内网当然可以连接外部静态IP,发起通讯的过程中,UDP可以直接从recvfrom函数的参数返回中可以得到信息,直接回传对应的IP和端口。这样实现了通讯。
其实,看到这里,可以产生一个问题:UDP发送端没有bind()一个端口,怎么实现接受信息呢???我是这样理解的,内网IP发送信息时,虽然没有显示的绑定端口,但是在调用sendto时,应该系统内核作了一个绑定其IP和一随机端口的处理,这样,接受方接到的信息可以有IP和端口信息,而发送方也可以接受到回复信息。

关于状态监控,结合作的项目,我是这样处理的,外网机器因为需要不定时的向内网机器发送一定信息,而他又不能主动进行通讯,因此,我就让内网ip定时向外网ip进行询问,如果外网ip有需要发送的信息,则可以顺利发送到内网机器,而这正好也达到了状态监控的功能,如果内网机器长时间接受不到回复,则可以认为外网机器出现故障,请求其他正常的外网机器进行信息交互。外网机器也一样,如果接受不到询问数据,则认为内网机器出现故障。

上面是我个人的一些想法,也没有系统的去了解通信机制,请大家多指点,一起讨论。

[ 本帖最后由 kingjwj 于 2006-11-3 09:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP