开始接收客户端请求时,Java Socket消耗100%CPU

我有一个消耗100%CPU的套接字,单个客户端总是将数据发送给服务器约4096字节,在服务器端,我要获取客户端数据并转换为实际形式并存储到数据库中。客户端每3秒发送一次数据。我做了以下代码来获取客户请求。

    ServerSocket waiting = new ServerSocket(18800,50,Inetaddress.getByName("192.20.50.102"));
    while(true) {
       Socket socket = waiting.accept(); 
       new SessionHandler(socket).start();
    }

用C语言编写的客户端代码,因此数据类型与Java不同,因为我需要将接收到的字节转换为实际形式并插入数据库中。线程类代码如下:

public class SessionHandler extends Thread {

private Socket socket;

public SessionHandler(Socket socket) {
    this.socket = socket;
}

public void run() {
    DataInputStream dataInputStream;
    try {
        dataInputStream = new DataInputStream(socket.getInputStream());
        int tcCode = dataInputStream.readInt();
        int length = dataInputStream.readInt();
        if (tcCode == 1001) {
            System.out.println("in 1001");
            byte[] messageByte = new byte[length];
            int totalBytesRead = 0;
            while (totalBytesRead < length) {
                int currentBytesRead = dataInputStream.read(messageByte,totalBytesRead,length - totalBytesRead);
                totalBytesRead = currentBytesRead + totalBytesRead;
            }
            ByteBuffer buffer = ByteBuffer.wrap(messageByte);
            ShortBuffer shortBuffer = buffer.asShortBuffer();
            short[] values = new short[length / 2];
            shortBuffer.get(values);
            TCCodeoneOOOne tcCodeoneOOOne = new TCCodeoneOOOne(values);
            tcCodeoneOOOne.main(null);
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
chen22di 回答:开始接收客户端请求时,Java Socket消耗100%CPU

尝试如下:

GlobalFree(HGLOBAL(VConfig.lpszAutoConfigUrl)); 
本文链接:https://www.f2er.com/3161144.html

大家都在问