Java网络编程从入门到精通(28):得到ServerSocket信息的办法及[Java编程]
本文“Java网络编程从入门到精通(28):得到ServerSocket信息的办法及[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
与ServerSocket对象相关的信息有两个:绑定端口和绑定IP地址.绑定端口可以通过getLocalPort办法得到.绑定IP地址可以通过getInetAddress办法得到.
1、getLocalPort办法
getLocalPort办法的返回值可分为以下三种情形:
1.ServerSocket对象未绑定端口,getLocalPort办法的返回值为-1.
2.ServerSocket对象绑定了一个固定的端口,getLocalPort办法返回这个固定端口.
3.ServerSocket对象的绑定端口为0,getLocalPort办法返回一个随机的端口(这类端口被称为匿名端口).
getLocalPort办法的定义以下:
public int getLocalPort()
getLocalPort办法主如果为这些匿名端口而预备的.下面的代码演示了ServerSocket对象产生随机端口的历程:
package server;
import java.net.*;
public class RandomPort
{
public static void main(String[] args) throws Exception
{
for (int i = 1; i <= 5; i++)
{
System.out.print("Random Port" + i + ":");
System.out.println(new ServerSocket(0).getLocalPort());
}
}
}
运行后果:
1.主动情势
在主动情势中,FTP服务器绑定了两个端口:21和20 (这两个端口是默许值,可以设成别的端口).此中21端口负责客户端和服务器之间的号令传送.一开始,由客户端主动衔接服务端的21端口,并且向服务器发送呼应的FTP号令.别的一个端口20是负责客户端和服务端的数据传送.但要注意,并非客户端主动衔接服务端的20端口,而是在客户端成立一个利用匿名端口的服务端衔接(在Java中就是成立一个ServerSocket对象,并且绑定端口是0).然后客户端通过21端口将这个匿名端口告诉服务端.最后,服务端主动衔接客户端的这个匿名端口(所以这种情势叫主动情势,就是服务器主动衔接客户端).图1描写主动情势的工作原理.
图1 主动情势的工作原理
从图1可以看出,在主动情势中,在传送号令和数据时,成立衔接的历程是相反的.也就是说,在传送号令时,由客户端主动衔接服务器的21端口.而传送数据时,由服务器主动衔接客户端的匿名端口.这种方法是FTP服务器最初的工作情势,但这种情势有很大的范围性.如客户端通过代理上网,并且未做端口映射.在这种情形下,服务端是无法主动和客户端成立衔接的.因此,这就产生的另一种情势:被动情势.
以上是“Java网络编程从入门到精通(28):得到ServerSocket信息的办法及[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |