java使用socket服务端一直接收8888端口的设备客户端发送过来的十六进制数据 请编写个demo
时间: 2023-08-31 21:22:50 浏览: 120
### 回答1:
可以使用Java Socket API编写一个接收8888端口数据的示例代码:import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888); // 创建服务端Socket,绑定8888端口
System.out.println("服务端开始监听");
while (true) {
Socket socket = serverSocket.accept(); // 监听客户端请求,接收客户端Socket
byte[] data = new byte[1024]; // 创建接收数组
int len = socket.getInputStream().read(data); // 读取客户端发送的数据,放到接收数组中
String hexData = bytesToHexString(data); // 将接收到的数据转换为十六进制
System.out.println("接收到客户端发送的数据:" + hexData);
}
}
// 将接收到的字节数组转换为十六进制字符串
public static String bytesToHexString(byte[] src){
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
}
### 回答2:
在Java中编写一个Socket服务端接收8888端口设备客户端发送过来的十六进制数据的示例代码如下:
```java
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServerDemo {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
System.out.println("等待设备客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("设备客户端已连接");
// 读取设备客户端发送过来的十六进制数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = 0;
StringBuilder hexData = new StringBuilder();
while ((length = inputStream.read(buffer)) != -1) {
// 将字节数组转换为十六进制字符串
for (int i = 0; i < length; i++) {
hexData.append(String.format("%02X ", buffer[i]));
}
// 在这里对接收到的十六进制数据进行处理
System.out.println("接收到的十六进制数据:" + hexData.toString());
hexData.setLength(0); // 清空StringBuilder
}
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
上述代码创建了一个ServerSocket对象,并在8888端口上监听客户端的连接请求。每当接收到一个设备客户端的连接,就会执行循环读取设备客户端发送的数据,并将接收到的字节数组转换为十六进制字符串进行处理。这里示例代码中只是简单地将接收到的十六进制数据打印输出,你可以根据需求进行进一步的处理。
阅读全文