套接字客户端什么都不发送

时间:2014-09-17 19:46:41

标签: java android sockets

我遇到了一个问题:我的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");
        }
    }
}

有人有想法吗? :)

由于

1 个答案:

答案 0 :(得分:0)

您应该在客户端使用writeUTF。当您使用readUTF方法时,您的服务器期望UTF。

writeUTF在开头写入额外的2个字节,表示块长度。使用普通写入方法时,不提供这些字节,这就是问题所在。