Java 在C中以\0结尾的串联字符串
是否有一种方法可以将C中的串连接起来,并用符号\0分隔 比如说。我正在创建一个简单的程序,它由一个客户机(Java)和一个服务器(C)组成。java客户端发送一条消息,其中包含两个“部分”:操作(例如寄存器)和参数(用户名)。然后,服务器必须识别操作和参数并执行一些操作 问题是,操作和参数(两个字符串)必须以\0符号结尾,但这样做只会使服务器识别该操作(因为当它从客户端接收到消息时,在找到\0符号时会停止读取) 是否有一种方法可以从客户端接收消息作为“操作\0参数\0”,并识别操作字符串和参数字符串 PD:我用TCP套接字实现这个程序,在客户端我使用printwriter发送消息 PD2:消息不能超过256字节Java 在C中以\0结尾的串联字符串,java,c,sockets,tcp,Java,C,Sockets,Tcp,是否有一种方法可以将C中的串连接起来,并用符号\0分隔 比如说。我正在创建一个简单的程序,它由一个客户机(Java)和一个服务器(C)组成。java客户端发送一条消息,其中包含两个“部分”:操作(例如寄存器)和参数(用户名)。然后,服务器必须识别操作和参数并执行一些操作 问题是,操作和参数(两个字符串)必须以\0符号结尾,但这样做只会使服务器识别该操作(因为当它从客户端接收到消息时,在找到\0符号时会停止读取) 是否有一种方法可以从客户端接收消息作为“操作\0参数\0”,并识别操作字符串和参数字
提前感谢只需继续调用
recv
(在缓冲区中累积数据),直到您收到的数据包含两个零字节。一旦完成,解析接收到的数据以提取两个字符串
recv
将(更多)数据读入缓冲区要将字符串拆分为令牌,通常使用
strtok
您真的在问如何在C字符串中允许\0吗?您可以使用类似“abcdef\0rtyuo\0\0”这样的字符串(注意末尾的2个零),然后在接收到2个连续的零时停止服务器并删除最后的零字节。同时确保发送字符串的总长度。可能在数据本身之前。如果您知道消息不能超过256个字节,则可以将长度调整为一个字节。请注意,默认情况下,Java使用UTF-16进行字符串编码。