2013-05-06 107 views
-2

我用這個代碼從C客戶端發送一個字符串到Java服務器從C客戶端發送一個字符串到Java服務器

if(send(to_server_socket, clientString, strlen(clientString), 0) != strlen(clientString)) 
{ 
    printf("socket write failed"); 
    exit(-1); 
} 

和我讀到它像這樣

String clientString=din.readLine(); 
      System.out.println(clientString); 

它工作完美,但我認爲這不是發送字符串的最佳方式。如果我TRIE到recive發送後一個字符串,我添加以下代碼

byte_count2 = recv(to_server_socket, buf2, sizeof buf2, 0); 

它不工作,甚至發送再也不會當你發送一個字符串,你需要發送工作

+1

說真的。你會問這個問題多少次? http://stackoverflow.com/questions/16386754/send-a-string-from-c-client-to-java-server – austin 2013-05-06 14:18:46

+0

這不是同一個問題! – user2350329 2013-05-06 14:21:35

+0

看看[在此](http://shoe.bocks.com/net/#send) – 2013-05-06 15:40:44

回答

0

不僅僅是字符串,而且是字符串的空終止符,所以讀者知道字符串結束的位置。我表示儘可能多的my prior reply to you on this last week ...

if(send(to_server_socket, clientString, strlen(clientString)+1, 0) != strlen(clientString)+1)

注意+1 - 這是對串空終止字節。這是大多數字符串類型所必需的。當時我在交換中給你的評論特別包括了這一點。

+0

是的,我知道,但它不適用於readline()和readUTF() – user2350329 2013-05-06 14:56:52

+0

,但現在我確定問題在那裏,在字符串的接收 – user2350329 2013-05-06 14:57:33

相關問題