0

例如,当我发送“1234”时,使用 SFML 库的 C++ 服务器读取“1234╠╠╠╠╤lσ╝╝√=♦↑עσ”。从 C++ SFML clinet 发送到服务器时,一切正常。用 Onj-c 编写的带有 Async Socket 库的原始客户端。怎么回事?(所有 TCP)

4

4 回答 4

2

我不确定这会对您有所帮助,但我建议发送类似“1234\0”的内容。

于 2010-11-20T19:54:18.430 回答
0

听起来服务器假设它接收到的数据是空终止的,但是其中一个客户端只是发送“1234”而不是“1234\0”。因此,您看到的奇怪字符可能是服务器内存中碰巧出现的任何垃圾。

您可以使用Wireshark之类的工具来准确查看通过网络传输的内容,以及两个客户端之间的差异。

于 2010-11-20T20:01:31.910 回答
0

SFML 中的幼稚实现确实假设了一个以空结尾的字段 - 并将向您展示其原始缓冲区。这确实不会终止。要么用 \0 终止发送字符串,要么发送类似 12345 的内容 - 并将打印更改为在 [len] 处放置 \0 - 或类似的。

于 2010-11-20T20:05:04.097 回答
0

从您的库中获取字符串以及数据的长度并在 [len] 处添加 \0

于 2010-11-20T21:05:56.623 回答