[英]TCP Server unable to receive the data when send by GPRS Modem
以下代码在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调制解调器中获取数据。
该代码每个连接只能读取一行。 您需要为每个连接启动一个新线程,并使其在自己的循环中处理所有I / O。
我也想知道GPRS客户端是否正在发送线路终结器。 您最好只读写字节:
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
直接在输入和输出流上操作,任何大于1的缓冲区大小,例如1024为开始。 count
是一个int.
我也看不出您为什么也需要大写。 如果服务器不了解GPRS调制解调器实际发送的内容,则需要对其进行修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.