2015-04-01 19 views
0

所以我的msgrcv()函數調用非常好用,但它增加了從其他進程收到的字符。C - msgrcv爲接收到的消息添加字符,非常奇怪

當發送進程發送你好,接收機處理接收你好@ \ n你好\ n @你好@,因爲它打印不同的東西隨機地,這是很難欺騙修復與一些字符修剪。

代碼:

if (msgrcv(clientQueueID, &msg, sizeof(msg.data), 0, 0) == -1) 
    { 
     // No message received from client 
    } 
    else 
    { ......... 

在這種情況下,印刷msg.data表明其具有附加額外的字符。

這是我如何打印:

printf("RECEIVED MESSAGE LENGTH %d: '%s'\n", (int)strlen(msg.data), msg.data); 

任何人有任何想法,爲什麼發生這種情況?

回答

0

我知道這是一個奇怪的問題......原來這是我的客戶的問題。我有一個簡單的小函數,它掃描'\ n'並用'\ 0'替換它以「刪除」它,因此不會發送新行。

無論如何,解決方案是不刪除客戶端的新行。不知何故,服務器正在正確地讀取所有內容,新行和所有內容。希望能幫助某個人。