欢迎访问宙启技术站
智能推送

Java中的网络编程函数:Socket和ServerSocket的应用

发布时间:2023-06-18 13:31:43

Java中的网络编程需要用到两个类:Socket和ServerSocket。Socket是一种网络通信的工具,可以用来建立连接、发送和接收数据;而ServerSocket则是用来监听并接受客户端连接请求。在网络编程中,Socket和ServerSocket经常用到,下面我们来详细了解一下这两个类的应用。

一、Socket

Socket是一种传输层协议,通过Socket可以完成在网络中的通信。Java中的Socket可以用来建立连接,发送和接收数据。创建Socket时,需要指定连接的IP地址和端口号,然后使用Socket.getInputStream()和Socket.getOutputStream()方法获取输入输出流,来实现数据的读和写。

1. Socket的创建

使用Socket类来创建一个Socket对象,指定IP地址和端口号。

Socket s = new Socket("IP地址", 端口号);

2. 发送数据

使用Socket.getOutputStream()方法获取输出流,然后使用write()方法来发送数据。

OutputStream os = s.getOutputStream();    //获取输出流
os.write(发送的数据.getBytes());     //发送数据

3. 接收数据

使用Socket.getInputStream()方法获取输入流,然后使用read()方法来接收数据。一般情况下,read()方法会阻塞,直到接收到数据为止。

InputStream is = s.getInputStream();   //获取输入流
byte[] b = new byte[1024];
int len = is.read(b);    //接收数据
String str = new String(b, 0, len);

4. 关闭Socket

使用Socket.close()方法来关闭Socket连接。

s.close();

二、ServerSocket

ServerSocket是一种网络套接字,用于监听指定端口的客户端连接请求。当客户端请求连接时,ServerSocket会接受连接请求并将Socket对象传递给相关处理程序。ServerSocket的实现通常是单线程的,因此只能处理一次连接。

1. ServerSocket的创建

使用ServerSocket类来创建一个ServerSocket对象,然后使用bind()方法来绑定监听的端口。

ServerSocket server = new ServerSocket(端口号);    //创建ServerSocket对象
server.bind(new InetSocketAddress("IP地址", 端口号));   //绑定监听的IP地址和端口号

2. 监听连接请求

使用ServerSocket.accept()方法来监听客户端的连接请求。accept()方法会阻塞,直到有连接请求为止。当有客户端连接时,accept()方法会返回一个Socket对象,此时可以使用Socket.getInputStream()获取输入流,使用Socket.getOutputStream()获取输出流。

Socket s = server.accept();    //监听连接请求
InputStream is = s.getInputStream();   //获取输入流
byte[] b = new byte[1024];
int len = is.read(b);    //接收数据
String str = new String(b, 0, len);

3. 关闭ServerSocket

使用ServerSocket.close()方法来关闭ServerSocket对象。

server.close();

以上就是Java网络编程中两个重要的类:Socket和ServerSocket的应用。可以使用它们来实现客户端和服务器之间的通信,并实现数据的传输。在使用的过程中要注意关闭Socket和ServerSocket对象,以免造成资源浪费。