java的socket编程
时间: 2023-10-14 10:16:14 浏览: 80
Java的Socket编程是通过Socket类和ServerSocket类来实现的。Socket类代表客户端,ServerSocket类代表服务器端。客户端通过Socket类向服务器端发起连接请求,服务器端通过ServerSocket类监听客户端的连接请求并接收客户端连接。
以下是一个简单的Java Socket编程示例:
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建一个Socket对象,指定连接的服务器和端口号
Socket socket = new Socket("localhost", 8888);
// 获取输出流,向服务器发送数据
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("Hello, server!");
pw.flush();
// 获取输入流,从服务器接收数据
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String message = br.readLine();
System.out.println("Message from server: " + message);
// 关闭连接
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建一个ServerSocket对象,指定监听的端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started, waiting for client...");
// 监听客户端的连接请求
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
// 获取输入流,从客户端接收数据
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String message = br.readLine();
System.out.println("Message from client: " + message);
// 获取输出流,向客户端发送数据
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("Hello, client!");
pw.flush();
// 关闭连接
br.close();
is.close();
pw.close();
os.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码中,客户端通过Socket类向服务器发起连接请求,服务器通过ServerSocket类监听客户端的连接请求并接受客户端连接。客户端和服务器端通过输入流和输出流进行数据的收发。
阅读全文