多线程 计网socket编程java
时间: 2023-11-04 07:52:15 浏览: 114
Java多线程-Socket编程
多线程和计算机网络的Socket编程在Java中是常见的结合使用方式。多线程可以实现并发处理,而Socket编程则提供了网络通信的能力。
在Java中,可以使用Thread类或者实现Runnable接口来创建多线程。多线程可以同时处理多个任务,这对于网络编程特别有用,因为可以同时处理多个客户端的请求。
当涉及到计算机网络的Socket编程时,Java提供了java.net包来支持。使用Socket类和ServerSocket类可以在Java中创建基于TCP或UDP的网络连接。
下面是一个简单的示例,展示如何在Java中使用多线程和Socket编程:
1. 创建一个服务器端:
```java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(1234); // 监听1234端口
while (true) {
Socket socket = serverSocket.accept(); // 接收客户端连接
Thread thread = new Thread(new ServerThread(socket)); // 创建线程
thread.start(); // 启动线程
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread implements Runnable {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
String message;
while ((message = reader.readLine()) != null) {
System.out.println("Received message: " + message);
writer.println("Server: " + message); // 回复客户端
}
socket.close(); // 关闭连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
2. 创建一个客户端:
```java
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 1234); // 连接服务器
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String message;
while ((message = consoleReader.readLine()) != null) {
writer.println("Client: " + message); // 发送消息给服务器
System.out.println("Received from server: " + reader.readLine()); // 接收服务器回复
}
socket.close(); // 关闭连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的示例中,服务器端监听1234端口,每当有客户端连接时,会创建一个新的线程来处理客户端的请求。客户端通过Socket连接到服务器,并发送消息给服务器。服务器接收到消息后,将其打印出来,并回复客户端。客户端接收到服务器的回复后,也将其打印出来。
这只是一个简单的示例,实际的网络编程可能涉及更复杂的逻辑和功能。但是通过多线程和Socket编程的结合,可以实现并发处理多个客户端的请求,并实现基于网络的应用程序。
阅读全文