向外使用的IP肯定要是公用IP吧,不能是私有ip
解决方案 »
- 帮忙看下这段读取字节流的代码哪里出问题了
- java困惑
- 字符串转换成大写
- 画布刷新时如何保存原有内容不变???
- 如何定义一个线程安全的LinkedList对象?
- 高手请入! 这算不算是Java的一个bug呢?(讨论面向对象的设计)
- 关于jdialog的模式!
- 请问如何改变JFrame的颜色?用setBackground(color),好象不行。谢谢!
- 解释一下JBUILDER怎么。
- jdbc driver不能在jbuilder5下使用?
- 到底是太简单还是太难啊,怎么问了三次都没人答呢?
- haha,这里的高手真多,都和热情!!我想问objectinputstream和objectoutputstream在什么
另一方去连接对方的外部地址。
如果两方都在局域网中呢?
没错,你说的就是NAT(Network Address Translation)技术。
你所说的 "因为在局域网中的机器向外使用的IP都是一样的"
就是在网络的出口处使用了NAT技术,
分配给内网机器一个临时的外部地址以供访问(主要是用来接收)外部网络,
所以才会 "使用的IP都是一样的" 。具体原理你自己找找资料吧。一般NAT服务器会提供这样的功能:1)给内网的某台机器分配一个固定的外部地址,
或者2)给内网机器的某个服务端口分配一个固定的外部地址和端口,
这样,另一端局域网内部的机器就可以直接使用TCP连接这个地址/端口即可。
具体怎么配,要看你使用的何种NAT服务器了。
实际一般是使用局域网出口的路由器或者防火墙上提供的NAT功能,
linux的IP Masq也是一种NAT实现。
一定要给我分哟 :)
原理同上,只要你能访问外部的网站就可以的
除了NAT,还有什么办法可以访问外网吗?
且QQ使用的UDP,不是TCP
今天看到你问"客户端是否共用一个IP地址是没有关系的,因为是从不同的端口出去的",现作如下说明,希望对你有所帮助(注意:这里以应用程序为最小单位)。基于tcp/ip协议的应用程序在广域网的全址有两种情况: 直接连结internet的应用程序地址 = 出口ip地址 + 出口端口; 局域网内的应用程序地址 = 出口ip地址 + 出口端口+(代理服务)+本地ip地址+本地端口(监听端口); 代理服务有很多,几乎所有的拨号软件都有代理功能(win2000,winxp,winme都自带),还有wingate,sysgate等等,这些代理软件根据不同的协议(主要有两种:socket4 和 socket5,都是基于TCP/IP的,如果您有兴趣的话也可以编写一个)提供地址的转换功能,在此请各位不要和前面朋友keios(嘿嘿) 所说的NAT技术混淆,NAT只是一个虚拟映射技术。其中局域网内的应用程序地址是要通过代理服务才能访问外部网络,代理服务由连结internet的服务器提供,同样地,外部网络访问内部网机器的应用程序的时候,只是访问该服务器对应的端口,然后代理服务软件负责把外部的消息传送到和该端口对应的本地机器上(注意:端口和应用程序是一一对应的,一个机器可以在服务器上有多个端口)。因此,只有内部网的机器的应用程序先请求代理服务器分配到一个端口,才能被外部的程序访问到,这就是为什么必须客户端要先连结服务器端,而且服务器端一定要放在可以由外部ip的机器上。就写这么多吧,最后祝大家愉快!
QQ的8000端口是远程腾讯服务器的监听端口,本地的端口不需要设置,由系统自动分配。
谢谢你的回答!“广域网的全址”和“socket4 和 socket5”使我找到了方向了。
最后再问一下,看些什么书可以获得上面的相关知识呢?
有关网络编程的书都会涉及到这些内容,你可以到书店看一下,很多的!