栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十四章 网络

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十四章 网络

一,客户端/服务器计算

Java提供ServerSocket类来创建服务器套接字,Socket类来创建客户端套接字。Internet 上的两个程序通过使用IO流的服务器套接字和客户端套接字进行通信。
网络功能紧密地集成在Java中。Java API提供用于创建套接字的类来便于程序通过Internet通信。套接字( socket)是两台主机之间逻辑连接的端点,可以用来发送和接收数据。Java对套接字通信的处理非常类似于对输入输出操作的处理,因此,程序对套接字读写就像对文件读写一样容易。
网络程序设计通常涉及一个服务器和一个或多个客户端。客户端向服务器发送请求,而服务器响应请求。客户端从尝试建立与服务器的连接开始,服务器可能接受或拒绝这个连接。一旦建立连接,客户端和服务器就可以通过套接字进行通信。
当客户端尝试连接到服务器时,服务器必须正在运行。服务器等待来自客户端的连接请求。创建服务器和客户端所需的语句如图。

服务器套接字

要创建服务器,需要创建一个服务器套接字(server socket),并把它附加到一个端口上,服务器从这个端口监听连接。端口标识套接字上的TCP服务。端口号的范围为0-65535,但是0~1024是为特定服务保留的端口号。
创建一个服务器套接字:

ServerSocket serverSocket = new ServerSocket(port);
//如果端口已被占用,则会导致Java.net.BindException异常
客户端套接字

创建服务器套接字之后,服务器可以使用下面的语句监听连接:

Scoket scoket = serverSocket.accept();

这个语句会一直等待,直到一个客户端连接到服务器套接字。客户端执行下面的语句,请求与服务器进行连接:

Socket socket = new Socket("port",8000);

当使用主机名创建套接字时,Java虚拟机要求 DNS将主机名译成IP地址。

通过套接字进行数据传输

服务器接受连接后,服务器和客户端之间的通信就像输人输出(IO)流一样进行操作。创建流以及它们之间进行数据交换所需要的语句,

二,InetAdress类

InetAddress 类具有一个缓存,用于存储成功及不成功的主机名解析。
默认情况下,当为了防止 DNS 哄骗攻击安装了安全管理器时,正主机名解析的结果会永远缓存。当未安装安全管理器时,默认行为将缓存一段有限(与实现相关)时间的条目。不成功主机名解析的结果缓存非常短的时间(10 秒)以提高性能。

		ServerSocket serverSocket = new ServerSocket(8541);
		Socket socket = serverSocket.accept();
		InetAddress inetAddress = socket.getInetAddress();
		inetAddress.isMulticastAddress(); //检查 InetAddress 是否是 IP 多播地址的实用例行程序。
		inetAddress.isAnyLocalAddress(); //检查 InetAddress 是否是通配符地址的实用例行程序。
		inetAddress.isLoopbackAddress(); //检查 InetAddress 是否是回送地址的实用例行程序。
		inetAddress.isLinkLocalAddress(); //检查 InetAddress 是否是链接本地地址的实用例行程序。 
三,服务多个客户

多个客户端同时连接到单个服务器是非常常见的。典型的情形是,一个服务器程序连续不停地在服务器计算机上运行,Internet 上各处的客户端都可以连接到它。可以使用线程处理服务器上多个客户端的同时访问。例如:

		while(true) {
			ServerSocket serverSocket = new ServerSocket(8541);
			Socket socket = serverSocket.accept();
			Thread thread = new Thread(socket);
			thread.start();
		}	

服务器套接字可以有多个连接。while循环的每次迭代创建一个新的连接。无论何时,只要建立一个新的连接,就创建一个新线程来处理服务器和新客户端之间的通信,这样,就可以有多个连接同时运行。
互相独立运行的线程与指定的客户端进行通信。每个线程创建数据输入输出流问客尸端发送和接收数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820204.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号