【问题标题】:Convert String received from C to Java String将从 C 接收的字符串转换为 Java 字符串
【发布时间】:2017-10-25 20:21:20
【问题描述】:

我想转换从 C 发出的字符串,并在 Java 中将其作为字符串值接收。

这是我在 C 中发送字符串的代码。

strcpy(buffer,"hello");
send(clientSocket,buffer,4096,0);

还有我在 Java 中接收字符串的代码。

BufferedReader in = new BufferedReader(new InputStreamReader(LoginActivity.getSocket().getInputStream()));
String str = in.readLine();

但是,当我敬酒时,str 值以奇怪的符号出现。我该如何解决这个问题?

【问题讨论】:

  • send(clientSocket,buffer,4096,0); ---> send(clientSocket,buffer,strlen(buffer)+1,0);
  • 加上\n。然后是两边的charset编码。
  • @JoopEggen 我愿意,“你好\n”?
  • 是的,还有new InputStreamReader(..., StandardCharsets.UTF_8) 或其他东西(US_ASCII)。并且长度为 5+1; strlen.
  • @JoopEggen 好的,请注意!谢谢!

标签: java android c string sockets


【解决方案1】:

你应该改变

send(clientSocket,buffer,4096,0); 

send(clientSocket,buffer,strlen(buffer)+1,0);

这样你只发送你的字符串,而不是整个缓冲区。

而且我认为

in.readLine()

等待未发送字符串的换行符时挂起。

【讨论】:

  • 另外,使用 StreamReader 来处理多字节字符。
  • @Learning2code 轻松修复:在字符串末尾添加\n
  • 哇!有用! Gahhh,看起来我必须阅读更多关于 strlen 函数和 readline 的内容。非常感谢大家!
【解决方案2】:

您应该使用 InputStreamReader(InputStream in, String charsetName) 构造函数版本并传递用于在 C 中创建文本的 charsetName

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 2023-03-17
    • 2016-04-21
    • 2011-02-03
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多