【发布时间】:2015-06-10 06:51:43
【问题描述】:
有没有办法在 C 中连接字符串,它们之间用符号 \0 分隔?
例如。我正在创建一个由客户端(Java)和服务器(C)组成的简单程序。 java 客户端发送一条消息,其中包含两个“部分”,操作(例如,REGISTER)和参数(用户名)。然后,服务器必须识别操作和参数并进行一些操作。
问题是,操作和参数(两个字符串)都必须以 \0 符号结尾,但是这样做会使服务器只识别操作(因为当它接收到来自客户端的消息时,当它找到 \0 符号时停止读取)。
有没有办法从客户端接收消息为 "OPERATION\0PARAMETER\0" 并识别 OPERATION 字符串和 PARAMETER 字符串?
PD:我正在使用 TCP 套接字实现这个程序,并且在客户端我使用 printwriter 发送消息。
PD2:消息不能超过 256 字节
提前致谢
【问题讨论】:
-
要将字符串拆分为标记,通常使用
strtok -
你真的在问如何在 C 字符串中允许 \0 吗?
-
您可以使用这样的字符串“abcdef\0rtyuo\0\0”(注意末尾的 2 个零),然后在收到 2 个连续的零时停止服务器并删除最后一个零字节.
-
确保也发送了总字符串长度。可能在数据本身之前。如果您知道消息不能超过 256 个字节,则可以将长度调整为一个字节。
-
请注意,Java 默认使用 UTF-16 进行字符串编码。