【问题标题】:java how to send server responsejava如何发送服务器响应
【发布时间】:2015-09-23 10:17:58
【问题描述】:

我已经在 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();

}

}

【问题讨论】:

  • 我正在以二进制数据包格式发送响应,是否正确?
  • 不要依赖is.available()==0。它很可能不是你所期望的。这段代码还有更多的设计问题,但这会导致太过分。

标签: java sockets tcp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多