科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java2 参考大全:第18章 网络 (3)

Java2 参考大全:第18章 网络 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java2 参考大全:第18章 网络 (3)

作者:Herbert Schildt 著 张玉清 吴溥峰等 译 来源:清华大学出版社 2007年10月30日

关键字: 网络 java

  • 评论
  • 分享微博
  • 分享邮件

18.3.2 实例方法
InetAddress 类也有一些非静态的方法,列于下面,它们可以用于讨论过的方法返回的对象:
boolean equals(Object other) 如果对象具有和other相同的Internet地址则返回true。
byte[ ] getAddress( ) 返回代表对象的Internert地址的以网络字节为顺序的有四个元素的字节数组。
String getHostAddress( ) 返回代表与InetAddress对象相关的主机地址的字符串。
String getHostName( ) 返回代表与InetAddress对象相关的主机名的字符串。
int hashCode( ) 返回调用对象的散列码。
boolean isMulticastAddress( ) 如果Internet地址是一个多播地址返回true;否则返回false。
String toString( ) 返回主机名字符串和IP地址。
Internet地址在分层的缓存服务器系列中被找到。这意味着你的本地机可能像知道它自己和附近的服务器一样知道一个名称-IP地址的自动映射。对于其他名称,它可能向一个本地DNS服务器询问IP地址信息。如果那个服务器不含一个指定的地址,它可以到一个远程的站点去询问。这可以一路通到名为InterNIC(internic.net)的根服务器。该过程可能需要比较长的时间,所以结构化你的代码以使你在本地存储IP地址信息而不是重复向上查找信息是一个明智之举。
18.4 TCP/IP客户套接字
TCP/IP 套接字用于在主机和Internet之间建立可靠的、双向的、持续的、点对点的流式连接。一个套接字可以用来建立Java 的输入/输出系统到其他的驻留在本地机或Internet上的任何机器的程序的连接。
注意:小应用程序只建立回到下载它的主机的套接字连接。存在这个限制的原因是:穿过防火墙的小应用程序有权使用任何机器是很危险的事情。
Java中有两类TCP套接字。一种是服务器端的,另一种是客户端的。ServerSocket类设计成在等待客户建立连接之前不做任何事的“监听器”。Socket类为建立连向服务器套接字以及启动协议交换而设计。一个Socket对象的创建隐式建立了一个客户和服务器的连接。没有显式的说明建立连接细节的方法或构造函数。下面是用来生成客户套接字的两个构造函数:
Socket(String hostName, int port) 创建一个本地主机与给定名称的主机和端口的套接字连接,可以引发一个UnknownHostException异常或IOException异常。
Socket(InetAddress ipAddress, int port) 用一个预先存在的InetAddress对象和端口创建一个套接字,可以引发IOException异常。
使用下面的方法,可以在任何时候检查套接字的地址和与之有关的端口信息:
InetAddress getInetAddress( ) 返回和Socket对象相关的InetAddress。
Int getPort( ) 返回与该Socket对象连接的远程端口。
Int getLocalPort( ) 返回与该Socket连接的本地端口。
一旦Socket对象被创建,同样可以检查它获得访问与之相连的输入和输出流的权力。如果套接字因为网络的连接中断而失效,这些方法都能够引发一个IOException异常。
InputStream getInputStream( ) 返回与调用套接字有关的InputStream类。
OutputStream getOutputStream( ) 返回与调用套接字有关的OutputStream类。
void close( ) 关闭InputStream和OutputStream。
18.4.1 Whois
下面的例子打开了一个InterNIC服务器上“whois”端口的连接,传输命令行语句到套接字,然后打印返回的数据。InterNIC将努力寻找作为已注册的Internet域名的参数,然后传输回IP地址和该地点的联系信息。
//Demonstrate Sockets.
import java.net.*;
import java.io.*;
class Whois {
public static void main(String args[]) throws Exception {
int c;
Socket s = new Socket("internic.net", 43);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
String str = (args.length == 0 ? "osborne.com" : args[0]) + "\n";
byte buf[] = str.getBytes();
out.write(buf);
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
s.close();
}
}
例如,如果你在命令行键入osborne.com,你将会获得下面相似的结果:
Whois Server Version 1.3
Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
Domain Name: OSBORNE.COM
Registrar: NETWORK SOLUTIONS, INC.
Whois Server: whois.networksolutions.com
Referral URL: www.networksolutions.com
Name Server: NS1.EPPG.COM
Name Server: NS2.EPPG.COM
Updated Date: 07-apr-2000
>>> Last update of whois database: Fri, 6 Oct 2000 10:03:36 EDT <<<
The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and
Registrars.

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章