WEB开发网
开发学院软件开发Java Java网络编程从入门到精通(28):获取ServerSock... 阅读

Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 现在的大多数FTP客户端软件的默认工作模式都是被动模式,因此,Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理(3),这种模式可以克服防火墙等的限制,并且客户端不需要有固定IP,但这种模式也有它的缺点,要想分别得到端口和IP地址,必须将SocketAddr

现在的大多数FTP客户端软件的默认工作模式都是被动模式。因此,这种模式可以克服防火墙等的限制,并且客户端不需要有固定IP。但这种模式也有它的缺点,这就是在服务端要为客户开大量的端口(大多数FTP服务器开的端口范围是1024 ~ 5000,但有的服务器的范围达到1024 ~ 65535)。这对于服务器来说存在着一定的安全隐患。因此,如果可能的话,最好还是采用主动模式。

二、getInetAddress方法

getInetAddress可以得到ServerSocket对象绑定的IP地址。如果ServerSocket对象未绑定IP地址,返回0.0.0.0。getInetAddress方法的定义如下:

public InetAddress getInetAddress()

下面的代码演示了getInetAddress的使用方法:

ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("192.168.18.100", 0));    
System.out.println(serverSocket.getInetAddress().getHostAddress());    

运行结果:

192.168.18.100

三、getLocalSocketAddress方法

这个方法其实是将getLocalPort和getInetAddress方法的功能集成到了一起。也就是说,使用 getLocalSocketAddress方法可以同时得到绑定端口和绑定IP地址。这个方法返回了一个SocketAddress对象。 SocketAddress类是一个抽象类,要想分别得到端口和IP地址,必须将SocketAddress对象转换成 InetSocketAddress对象(InetSocketAddress类是从SocketAddress类继承的)。 getLocalSocketAddress方法的定义如下:

public SocketAddress getLocalSocketAddress()

下面的代码演示了getLocalSocketAddress的使用方法。

ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("192.168.18.100", 1234));
System.out.println(serverSocket.getLocalSocketAddress());
InetSocketAddress nsa = (InetSocketAddress)serverSocket.getLocalSocketAddress();
System.out.println( nsa.getAddress().getHostAddress());
System.out.println( nsa.getPort());

运行结果:

/192.168.18.100:1234
192.168.18.100
1234

上一页  1 2 3 

Tags:Java 网络编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接