gpt4 book ai didi

java - TCP Server 无法接收 GPRS Modem 发送的数据

转载 作者:行者123 更新时间:2023-12-01 13:18:37 26 4
gpt4 key购买 nike

下面的代码在java客户端上工作正常,服务器能够正确接收数据,但在GPRS客户端上却不能工作。 GPRS客户端在串口终端(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 调制解调器获取数据。

最佳答案

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

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

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

直接对输入和输出流进行操作,任何缓冲区大小 > 1,例如从 1024 开始。 count 是一个 int。

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

关于java - TCP Server 无法接收 GPRS Modem 发送的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22239680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com