【问题标题】:Client-server socket communication客户端-服务器套接字通信
【发布时间】:2024-04-22 01:15:02
【问题描述】:

问题

如果我只能在客户端使用,如何在服务器和客户端之间发送 UTF-8 数据

inputStream.read()

?

文档

从此流中读取单个字节并将其作为整数返回 范围从 0 到 255。如果流的结尾已经结束,则返回 -1 到达。

没有 reader.readLine() 和任何其他。 (阅读器我看不到流的结尾)

请帮忙!

(完整代码:)

int c;
String str = new String();
while ((c = inputStream.read( )) != -1)
{
    char ch = (char)c;
    if(ch == '\n')
    {
        Log.v("", str);
        final String data = str;

        runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                String put[] = data.split("#");
                try
                {
                    //cmd parsing
                }
                catch(Exception e)
                {
                    //stop connection
                }
            }
        });
        str = "";
    }else{
        str += Character.toString(ch);
    }
}
//Communication error

请帮忙

【问题讨论】:

    标签: android sockets stream


    【解决方案1】:

    您可能想看看this 以前的帖子。那里有几个不错的选择。 read() 方法可以使用不同的参数进行重载,因此您可以读取一个字节或 n 个字节。查看完整的文档here。基本上,您必须读取原始字节,然后将它们转换为 ASCII 字符。另外,我很好奇您为什么不能使用BufferedReader 或等效类?

    【讨论】:

    • 在我看来,BufferedReader 不是在流不包含行而是结束时返回空值。我需要使用其他字母表中的字母,因此我使用 UTF8。谢谢你的好链接。
    最近更新 更多