通过GPRS调制解调器发送时,TCP服务器无法接收数据

时间:2014-03-07 01:27:19

标签: java tcp serversocket gprs

以下代码适用于java客户端,服务器可以正确接收数据,但它不适用于GPRS客户端。 GPRS客户端使用AT(Docklight)中的Serial Terminal命令将数据发送到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调制解调器获取数据。

1 个答案:

答案 0 :(得分:1)

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

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

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

直接在输入和输出流上操作,任何缓冲区大小> 1,说1024开始。 countint.

我不明白你为什么要把任何东西都搞砸了。如果服务器不理解GPRS调制解调器实际发送的内容,则有人需要修复它,因此确实如此。