Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java如何发送服务器响应_Java_Sockets_Tcp - Fatal编程技术网

java如何发送服务器响应

java如何发送服务器响应,java,sockets,tcp,Java,Sockets,Tcp,我已经用java开发了TCP/IP服务器,监听端口,GPS设备正在向服务器发送数据 最初,设备向服务器发送IMEI号码,服务器用01确认。在设备接收到确认后,向服务器发送一个新的数据包 我能够通过TCP服务器获得IMEI号码,在发送确认后,我无法从客户端接收新的数据包数据。我在下面也包括我的代码。请让我知道我错在哪里 这是我的密码 while(true) { socket = serverSocket.accept(); if(!socket.isClosed()) { System.out.

我已经用java开发了TCP/IP服务器,监听端口,GPS设备正在向服务器发送数据

最初,设备向服务器发送IMEI号码,服务器用01确认。在设备接收到确认后,向服务器发送一个新的数据包

我能够通过TCP服务器获得IMEI号码,在发送确认后,我无法从客户端接收新的数据包数据。我在下面也包括我的代码。请让我知道我错在哪里

这是我的密码

while(true) 
{
socket = serverSocket.accept();
if(!socket.isClosed())
{
System.out.println("Server accepted");

BufferedInputStream is = new  
BufferedInputStream(socket.getInputStream(),1500);
System.out.println("Server accepted"+is.available());

InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println("Server");
Object response="";
 int flag=0;

 Thread.sleep(2000);

response = br.readLine();
 DataOutputStream outToClient = new 
DataOutputStream(socket.getOutputStream());
try
{
        System.out.println("break::"+response);
             String hexString = "01";

             byte[] b = hexString.getBytes(StandardCharsets.US_ASCII);
             int len = b.length;
             outToClient.write(b,0,len);
             outToClient.write('\n');
            outToClient.flush();

            Thread.sleep(2000);

             if(is.available()==0)
             {
                 response = br.readLine();
                 System.out.println("break::"+response);
                 String s = ((String) response).substring(2,4);

                 int count = Integer.parseInt(s);
                 System.out.println("String len : "+count);
                 outToClient.write(count);
             }

             br.close();

}
catch (NullPointerException e) 
{
    e.printStackTrace();
}


socket.close();

}

}

从您的问题来看,您似乎正在配置Teltonika设备。我看到的错误是发送确认函。您应该发送附加的十六进制数据,如\x01,而不是01


此外,一旦接收到数据,它必须使用接收到的数据中的另一个动态值重新确认客户端

我正在以二进制数据包格式发送响应,是否正确?不要依赖于is.available==0。它很可能不是你所期望的。此代码存在进一步的设计问题,但这将导致太多问题。