温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!
Java Socket是一种用于网络通信的编程接口,它允许不同的计算机之间通过网络进行数据交换。在并发编程中,我们可以利用Java Socket实现多个客户端与服务器之间的并发通信。下面是一个简单的Java Socket并发代码示例:
我们需要创建一个服务器端程序,用于接收客户端的连接请求并处理客户端的数据。在服务器端程序中,我们需要创建一个ServerSocket对象来监听指定的端口,并使用accept()方法接收客户端的连接请求。一旦接收到客户端的连接请求,我们可以创建一个新的线程来处理该客户端的数据。
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started.");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
// 创建一个新的线程来处理客户端的数据
Thread clientThread = new Thread(new ClientHandler(clientSocket));
clientThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
接下来,我们需要创建一个客户端程序,用于连接到服务器并发送数据。在客户端程序中,我们需要创建一个Socket对象来连接服务器的IP地址和端口,并使用InputStream和OutputStream来读取和写入数据。
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("Connected to server.");
// 发送数据到服务器
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, server!".getBytes());
// 接收服务器的响应数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String response = new String(buffer, 0, length);
System.out.println("Server response: " + response);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例中,服务器端使用ServerSocket监听8888端口,接收到客户端的连接请求后,创建一个新的线程来处理该客户端的数据。客户端使用Socket连接到服务器的IP地址和端口,发送数据到服务器并接收服务器的响应数据。
这样,通过使用Java Socket的并发编程,我们可以实现多个客户端与服务器之间的并发通信。