我遇到了一个问题:我的Android手机上有一个套接字客户端,而我的PC上有一个Java套接字服务器。服务器 - > Android的效果很好,但是Android - >服务器无法正常工作。
这是我在手机上的发送方式:
public void sendMessage(String cmd, String parameter) {
String msg;
if(!parameter.equals(""))
msg = cmd+";"+parameter;
else
msg = cmd+";null";
Log.v(TAG,"Send: "+msg);
DataOutputStream bos;
try {
bos = new DataOutputStream(s.getOutputStream());
bos.write(msg.getBytes("US_ASCII"));
bos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我服务器上的接收:
@Override
public void run() {
while (isRunning) {
try {
DataInputStream dis = new DataInputStream(s.getInputStream());
String message = dis.readUTF();
System.out.println("#"+this.ID+": Received: "+message);
obs.setID(ID);
obs.proceedMsg(message);
} catch (IOException ex) {
this.isRunning = false;
System.out.println("#"+this.ID+": Closed Instance");
}
}
}
有人有想法吗? :)
由于
答案 0 :(得分:0)
您应该在客户端使用writeUTF。当您使用readUTF方法时,您的服务器期望UTF。
writeUTF在开头写入额外的2个字节,表示块长度。使用普通写入方法时,不提供这些字节,这就是问题所在。