所以我的msgrcv()
函数调用效果很好,但它会将字符添加到从其他进程收到的内容中。
发件人进程发送 hello 的地方,接收者进程收到 hello @ \ n 或 hello \ n @ 或 hello @ ,因为它随机打印不同的东西,这很难通过一些字符修剪来作弊。
代码:
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 :(得分:0)
我知道这是一个奇怪的问题......事实证明这对我的客户来说是一个问题。我有一个简单的小功能,扫描' \ n'并将其替换为' \ 0'去除"删除"所以新线路不会被发送。
无论如何,解决方案是不要从客户端删除新行。不知何故,服务器正在正确读取所有内容,新行和所有内容。希望能有所帮助。