Java网络编程从入门到精通(28):获取ServerSocket信息的方法及FTP原理
2009-09-22 00:00:00 来源:WEB开发网现在的大多数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
更多精彩
赞助商链接