在Java中使用Socket进行网络通信可以分为服务端和客户端两部分。
服务端:
1. 创建ServerSocket对象,并指定端口号。
2. 调用ServerSocket的accept()方法接收客户端连接请求,返回一个Socket对象。
3. 使用Socket对象的输入流和输出流进行数据的读取和写入。
4. 通信完成后,关闭Socket对象和ServerSocket对象。
示例代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,并指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 接收客户端连接请求,返回一个Socket对象
Socket socket = serverSocket.accept();
// 获取输入流和输出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 读取客户端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Client: " + data);
// 向客户端发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, client!\n");
writer.flush();
// 关闭流和Socket对象
reader.close();
writer.close();
is.close();
os.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端:
1. 创建Socket对象,指定服务端的IP地址和端口号。
2. 使用Socket对象的输入流和输出流进行数据的读取和写入。
3. 通信完成后,关闭Socket对象。
示例代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务端的IP地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 获取输入流和输出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 向服务端发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, server!\n");
writer.flush();
// 读取服务端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Server: " + data);
// 关闭流和Socket对象
writer.close();
reader.close();
is.close();
os.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码演示了一个简单的Socket通信过程,在实际应用中可能需要进行异常处理、循环读取数据等操作。