【问题标题】:TCP Server unable to receive the data when send by GPRS ModemGPRS Modem发送时TCP Server无法接收数据
【发布时间】:2014-03-07 09:54:00
【问题描述】:

下面的代码在java客户端上可以正常工作,服务器可以正确接收数据,但不能在GPRS客户端上工作。 GPRS 客户端使用Serial Terminal(Docklight) 中的AT 命令将数据发送到java 服务器。

public class Tcpserver {

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    String clientSentence;
    String capitalizedSentence;

    ServerSocket welcomeSocket = new ServerSocket(90);
    while(true)
    {             
        Socket connectionSocket = welcomeSocket.accept();
        System.out.println("connected:" );
        System.out.println("message length: "+ connectionSocket.getInputStream().available());
        BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        clientSentence = inFromClient.readLine();
        System.out.println("Received: " + clientSentence);
        capitalizedSentence = clientSentence.toUpperCase() + '\n';
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        outToClient.writeBytes(capitalizedSentence);
    }
}

}

谁能指出这段代码的问题,或者我们必须以什么方式从 GPRS 调制解调器获取数据。

【问题讨论】:

    标签: java tcp serversocket gprs


    【解决方案1】:

    此代码每个连接只能读取一行。您需要为每个连接启动一个新线程,并让它在自己的循环中处理所有 I/O。

    我也想知道 GPRS 客户端是否正在发送线路终结器。您最好只读取和写入字节:

    while ((count = in.read(buffer)) > 0)
    {
        out.write(buffer, 0, count);
    }
    

    直接对输入和输出流进行操作,任何缓冲区大小 > 1,例如 1024。 countint.

    我也不明白你为什么需要大写任何东西。如果服务器不理解 GPRS 调制解调器实际发送的内容,则需要有人对其进行修复。

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2020-06-22
      相关资源
      最近更新 更多