2017-05-25 131 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創建文本