繁体   English   中英

通过 Android socket 发送和接收 Bytes 两个问题:

[英]Sending and receiving Bytes over Android socket two issues:

我遇到了 JAVA/Android 工作室围绕发送和接收字节的问题。 值得注意的是:使用 TCP sockets 发送和接收超过 127 的字节值。

我在这里收到数据:

    try {
        mBufferOut = new PrintWriter(socket.getOutputStream());
        mBufferIn = new InputStreamReader(socket.getInputStream(), "UTF-8");
        char[] buffer = new char[64];

        while (mRun) {
mBufferIn.read(buffer);
            mServerMessage = String.valueOf(buffer);
            if (mServerMessage != null && mMessageListener != null) {
                mMessageListener.messageReceived(mServerMessage);
            }
            mServerMessage = null;
        }

并在此处发送数据:

public void sendMessage(final char[] message) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                if (mBufferOut != null) {
                    mBufferOut.write(message);
                    mBufferOut.flush();
                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();
    }

当我收到数据时,所有超过 127 的数据都返回为“231、191、189”。 当我发送数据时,值 x 超过 127 的每个字节都返回为“195,x”。

我怎样才能干净地解决这个问题?

我不认为将String作为char数组发送,并使用String.valueOf()来恢复它是正确的方法。

String已经有一种将自身转换为字节的机制:

byte[] bytes = text.getBytes("UTF-8");
...
String text = new String(bytes, "UTF-8");

尝试使用这 2 种方法将String转换为byte[] ,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM