在Java网络编程中,套接字是一个用于端点连接和数据交换的对象,一个套接字由IP地址和端口号唯一确定。网络的每一个端点都可以通过和连接绑定的套接字对象来交换数据。在Client/Server模式下,按照套接字在网络中所起的作用不同,可以将它们分为两类:客户端套接字Socket和服务器端套接字ServerSocket。
1.服务器端ServerSocket
服务器端的套接字ServerSocket始终在监听是否有连接请求,如果发现客户机端Socket向服务器发出连接请求,且服务器接受服务请求,则服务器端ServerSocket向客户机端Socket发回“接受”的消息。这样,两个Socket对象之间的连接就建立了。
2.客户机端Socket
客户机端Socket建立一个和服务器的连接,这需要客户机端知道服务器的主机名和提供服务的端口号。有了这些消息,当客户机端发出的建立连接的请求被服务器端接受时,客户机上就会创建一个Socket对象,利用这个Socket对象客户机就可以和服务器进行通信了。
Client/Server模式的原理如图12.3所示。
图12.3 Client/Server模式的原理(www.daowen.com)
在Client/Server模式的网络应用中,客户机端Socket用于向服务器发出连接请求和交换数据。服务器端的Socket始终在监听是否有连接请求,如果发现客户机端Socket向服务器发出连接请求,且服务器接受服务请求,则服务器端Socket向客户机端Socket发回“接受”的消息。此时,一个连接就建立起来了。然后,服务器端Socket和客户机端Socket就通过这个连接进行数据的传送。该工作过程包含以下4步:
(1)创建Socket对象。
(2)打开连接到Socket对象的输入/输出流。
(3)按照一定的协议对Socket对象进行读/写操作。
(4)关闭Socket对象(即关闭Socket对象绑定的连接)。
此外,在调用Socket类和ServerSocket类的某些方法时,可能出现某些异常(例如,网络没有联通,指定的IP地址不可到达,指定的端口号中没有服务进程等;再如,在服务器还没有启动的情况下,客户端请求服务器处理信息)。所以,在编写程序时要考虑到并及时处理这些异常。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。