Java网络函数:Socket和ServerSocket的使用示例
Java中的Socket和ServerSocket是基于TCP协议的网络编程函数,它们可以用于实现客户端和服务端之间的通信。在本文中,我们将使用一个简单的示例来介绍如何使用这两个函数。
客户端:
1. 创建Socket对象,指定服务器的地址和端口号。
2. 获取输出流,向服务器发送数据。
3. 获取输入流,从服务器接收数据。
4. 关闭Socket对象,释放资源。
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) {
Socket socket = null;
try {
// 创建Socket对象,指定服务器地址和端口号
socket = new Socket("localhost", 8888);
// 获取输出流,向服务器发送数据
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("用户名:admin;密码:123456");
pw.flush();
// 获取输入流,从服务器接收数据
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String response = br.readLine();
System.out.println("服务器返回:" + response);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端:
1. 创建ServerSocket对象,指定监听的端口号。
2. 调用accept()方法,等待客户端的连接。
3. 获取输入流,从客户端接收数据。
4. 获取输出流,向客户端发送数据。
5. 关闭Socket对象,释放资源。
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
try {
// 创建ServerSocket对象,指定监听的端口号
serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,端口号:8888");
// 调用accept()方法,等待客户端的连接
socket = serverSocket.accept();
System.out.println("客户端已连接");
// 获取输入流,从客户端接收数据
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String message = br.readLine();
System.out.println("客户端发送:" + message);
// 获取输出流,向客户端发送数据
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("您好,欢迎连接服务器!");
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在上述代码中,我们首先创建了一个ServerSocket对象,并指定了监听的端口号为8888。然后在服务端调用accept()方法,等待客户端的连接。
当客户端连接成功后,我们通过获取Socket对象的输入流和输出流来进行数据的传送。在客户端中,我们向服务器发送了一条数据,而在服务端中,我们向客户端发送了一条欢迎语。
最后,我们通过关闭Socket和ServerSocket对象来释放资源。
需要注意的是,Socket和ServerSocket在使用完毕后需要手动关闭,以免造成程序的资源浪费和安全问题。
总结:
Socket和ServerSocket是Java中实现TCP协议网络编程的函数,它们可以用于实现客户端和服务端之间的通信。在使用这些函数时,我们需要注意以下几点:
1. 在创建Socket和ServerSocket对象时,需要指定所要监听的端口号。
2. 在使用完毕后,需要手动关闭Socket和ServerSocket对象,以释放资源。
3. 在进行数据传输时,需要通过输入流和输出流来进行数据的收发。
我们可以在实际项目中,基于这些函数编写适用于自己的网络编程模块。
