通过TCPClient发送到Android上Java服务器套接字的数据会导致线程挂起
本文关键字:数据 挂起 线程 套接字 服务器 TCPClient Android Java 通过 | 更新日期: 2023-09-27 18:26:34
我正在创建一个发送短信的Android应用程序(SMSManager类)。这是我为开发人员创建的应用程序,因此,该应用程序必须能够与各种编程语言相互操作。该应用程序似乎可以很好地与JAVA和PHP配合使用。
我一直遇到C#的问题。
TcpClient sock = new TcpClient();
sock.Connect("192.168.1.24", 5000);
NetworkStream ns = sock.GetStream();
String str = "9840486945#hi";
byte[] by = Encoding.Default.GetBytes(str);
ns.Write(by, 0, by.Length);
ns.Read(by, 0, by.Length); //Will receive "Transmitted" or "Failed"
string returndata = System.Text.Encoding.Default.GetString(by);
Console.WriteLine(returndata);
if(returndata.Equals("Transmitted"))
{
ns.Read(by, 0, by.Length); //Will receive "Delivered"
returndata = System.Text.Encoding.Default.GetString(by);
Console.WriteLine(returndata);
}
在安卓方面,我尝试过:
if(lang.equals("CS"))
{
byte[] by=new byte[1024];
InputStream is;
try {
is = s.getInputStream();
is.read(by);
input=new String(by);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我已经检查了进入安卓应用程序的输入,它完全正常。但当我使用从套接字收到的输入时,Logcat应用程序的日志显示:
W/System.err(14636): at com.app.mysmsgateway.Receiver.run(MainActivity.java:498)
这就是第498行包含的内容:
smsManager.sendTextMessage(phoneNo, null, msg, sentPI, deliverPI);
提前感谢!
EDIT:将两端的编码更改为UTF-8。仍然显示System.err.
我发现了这个问题,我设置了一个预定义的字节数组大小,这导致了许多ASCII代码为0的字符,这意味着我的大部分字节数组都没有填充。解决了我的问题!感谢您抽出时间@Jonskeet和@PedroOlivera!