2017-05-25 148 views
1

我想将从C发出的字符串进行转换,并将其作为Java中的字符串值接收。将从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值会出现在奇怪的符号中。我如何解决这个问题?

+0

'发(ClientSocket的,缓冲,4096,0);' - >'发(ClientSocket的,缓冲区,strlen的(缓冲) +1,0);' – LPs

+2

Plus'\ n'。然后是双方的字符编码。 –

+0

@JoopEggen所以我这样做,“你好\ n”? – Learning2code

回答

2

你应该改变

send(clientSocket,buffer,4096,0); 

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

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

而且我认为

in.readLine() 

挂起期待的新行字符不是字符串中发送。

+1

另外,使用StreamReader来处理多字节字符。 –

+0

嗯..我应该改变“in.readline()”到? – Learning2code

+0

@ Learning2code简易修正:在字符串末尾添加'\ n' – LPs

0

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

相关问题