java socket客户端多线程tcp实现16进制
时间: 2023-08-02 10:07:22 浏览: 123
TCP Socket Client 客户端压力测试
如果你想在Java Socket客户端多线程TCP实现中使用16进制数据,可以使用Java的`DataInputStream`和`DataOutputStream`类来实现。
以下是一个简单的Java Socket客户端多线程TCP实现的示例代码,它可以发送和接收16进制数据:
```java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
public class ClientThread extends Thread {
private Socket socket;
public ClientThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
DataInputStream input = new DataInputStream(socket.getInputStream());
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
// 发送16进制数据
byte[] sendData = new byte[]{0x12, 0x34, 0x56};
output.write(sendData);
output.flush();
System.out.println("Sent data: " + bytesToHex(sendData));
// 接收16进制数据
byte[] receiveData = new byte[1024];
int receiveLen = input.read(receiveData);
byte[] actualData = Arrays.copyOfRange(receiveData, 0, receiveLen);
System.out.println("Received data: " + bytesToHex(actualData));
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
}
```
在主程序中,我们可以创建多个客户端线程,每个线程处理一个客户端连接:
```java
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket socket = serverSocket.accept();
ClientThread clientThread = new ClientThread(socket);
clientThread.start();
}
}
}
```
在这个示例代码中,我们创建了一个ServerSocket并监听8080端口。当有客户端连接时,我们创建一个ClientThread线程来处理这个连接。每个线程处理完一个连接后就会关闭这个连接。
注意,在发送和接收16进制数据时,需要调用`DataOutputStream.write(byte[] b)`和`DataInputStream.read(byte[] b)`方法,而不是`PrintWriter.println(String s)`和`BufferedReader.readLine()`方法。
阅读全文