您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 100分求教 UPD CSocket通信问题

100分求教 UPD CSocket通信问题

来源:网络整理     时间:2016/8/4 17:28:53     关键词:

关于网友提出的“ 100分求教 UPD CSocket通信问题”问题疑问,本网通过在网上对“ 100分求教 UPD CSocket通信问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 100分求教 UPD CSocket通信问题
描述:

    首先我问一个问题:如何判断本机的IP是公网(外网)IP还是内网IP?
    我自已登录:www.ip38.com 时获得的本机IP是:59.42.94.235 ,可是我用Dos命令:ipconfig 查看到的IP是:192.168.0.178
两者是不同的.请问这样说明我现在用的IP不是外网IP吗?可以的话请告诉我一个判断方法,谢谢!
    还有一个问题就是:现在我用网络测试助手测试,硬件端通过GPRS往上面第一个IP:59.42.94.235发送数据,可以通信,我发回去硬件端也可以接收.可是为什么用内网的IP向我这台电脑的IP发数据时却收不到了呢?这说明我用的是外网IP吗?这样的话那岂不是有点矛盾了?
    我听我们电脑部门的人解释说我这台电脑的IP是公网的IP,只是映射到我的电脑后用ipconfig看到的是192.168.0.178.
请高手指点一下到底是什么原因?还有NAT的具体原理是怎样的?万分感谢!
     


解决方案1:

UP

解决方案2:

找你网管,
利用静态路由,映射个端口,
很简单,他几分钟久弄好,一共才几句话。。。

解决方案3:

你这个情况应该是这样:
你的电脑是在一个路由器下划分的一个内部局域网。你的ip 192.168.0.178 是你在这个局域网内部的ip,而你们这个内部局域网所有电脑对外的IP都是59.42.94.235 ,这个ip是在路由器那设定的,问你们网管就知道了。所以你上www.ip38.com时,他看到的是你们对外的IP59.42.94.235 。你从里往外通信时,先发给路由器,路由器在发给你通信的目标,这样很明确;反之,如果外网给你这个局域网内你的电脑通信,它只能发给你们这个局域网对外的ip59.42.94.235 ,因为外网只知道这个,发到这个ip的某个端口后,路由器就糊涂了,因为它下边有好多个内网ip,它不知道要转发给谁,所以就需要你进行端口映射了,就是指定如果路由器(59.42.94.235 )收到外边发到你指定端口映射的端口的数据,就直接转发给你的这台电脑(192.168.0.178 )。
至于怎么进行端口映射,那看你有没有权限拉,你在地址栏输入192.168.0.1 或者192.168.0.3 ,用户名是admin 密码是admin ,如果能进去的话,那么就能配置端口映射,如果不能就找网管把。配置端口映射,你上网上查查吧。
还有种情况,我之前作工程遇到过,就是如果你从内往外从某个端口向外发数据,然后在极短的时间内(我记得当初测试过,这个时间记得好像小于1秒),在该端口能收到返回的数据,那么就不用配置端口映射了,这个现在我也没明白,自己的解释就是路由器由短暂的“记忆“功能,如果你从某个端口发出数据,然后短时间内收到数据,那么它就会自动转发给刚刚发出数据的电脑。
还有种情况 是外边往你这发数据,如果发给你不是特殊的端口,比如80或者qq用那个端口,那么可能你就收不到数据,因为被屏蔽了,这样一般都是为了防止攻击,或者是因为路由在处理时候有端口优先级的,如果不是常用端口,那么可能排到最后,这样就可能无法得到处理,进而你收不到数据。

解决方案4:

其实正常情况下不管你用的是外网还是内网的IP,你只要在接收端首先获取对方的IP,然后超这个IP发过去就可以了,当然如果是内外网的话要做端口转发。如果是在同一局域网内的话不需要端口转发,直接指定对方内网地址端口就可以了。

解决方案5:

引用楼主 redleaf515 的帖子:
    首先我问一个问题:如何判断本机的IP是公网(外网)IP还是内网IP? 
    我自已登录:www.ip38.com 时获得的本机IP是:59.42.94.235 ,可是我用Dos命令:ipconfig 查看到的IP是:192.168.0.178 
两者是不同的.请问这样说明我现在用的IP不是外网IP吗?可以的话请告诉我一个判断方法,谢谢! 
    还有一个问题就是:现在我用网络测试助手测试,硬件端通过GPRS往上面第一个IP:59.42.94.235发送数据,可以通信,我发回去硬件端也可以接收.可是…

任何一台能上网的机器登陆www.ip38.com 都会获得一个类似公网的IP,但是否该机器使用的就是公网IP取决于网络供应商和本地网络设置
换句话说如果你是处于局域网中,除非在网络设置中已经将公网IP对你的机器做了映射,否则你只有内网的Ip;但如果你是个人上网(如网通拨号),则可拥有网通提供的固定外网ip,但也有少数网络供应商不提供固定IP,这个可以打个电话问问就知道了
我也是最近遇到类似的问题 才知道点,有些说得可能不太对,最好再有高人指点,希望对楼主有所帮助... 解决方案6:

引用 11 楼 redleaf515 的回复:
引用 8 楼 daviemeng 的回复:
你这个情况应该是这样:
你的电脑是在一个路由器下划分的一个内部局域网。你的ip 192.168.0.178 是你在这个局域网内部的ip,而你们这个内部局域网所有电脑对外的IP都是59.42.94.235 ,这个ip是在路由器那设定的,问你们网管就知道了。所以你上www.ip38.com时,他看到的是你们对外的IP59.42.94.235 。你从里往外通信时,先发给路由器,路由器在发给你通信的目标,这样很明确;反之,如果…

这个也就是发到你网关,网关怎么处理就需要根据NAT来知道把数据包发送给内网哪台机器 解决方案7:

NAT原理:http://net.zdnet.com.cn/network_security_zone/2009/0316/1356149.shtml

解决方案8:

你的Ip就是 192.168.0.178 内网访问不到你 你不是你机器的防火墙的问题
登录:www.ip38.com 时获得的本机IP是:59.42.94.235 是你网关的IP 也是公网Ip你是通过网关的Ip
外网你访问到你因为 先连接到59.42.94.235 这个机器在把数据转给你的,原因你说过了 做了端口映射

解决方案9:

引用楼主 redleaf515 的帖子:
    首先我问一个问题:如何判断本机的IP是公网(外网)IP还是内网IP? 
    我自已登录:www.ip38.com 时获得的本机IP是:59.42.94.235 ,可是我用Dos命令:ipconfig 查看到的IP是:192.168.0.178 
两者是不同的.请问这样说明我现在用的IP不是外网IP吗?可以的话请告诉我一个判断方法,谢谢! 
    还有一个问题就是:现在我用网络测试助手测试,硬件端通过GPRS往上面第一个IP:59.42.94.235发送数据,可以通信,我发回去硬件端也可以接收.可是…

说明你的机器是经过NAT之后上网的...
www.ip38.com 时获得的本机IP是:59.42.94.235 -- 这个ip实际是给局域网做nat的机器的ip

以上介绍了“ 100分求教 UPD CSocket通信问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3108243.html

相关图片

相关文章