Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在C中以\0结尾的串联字符串_Java_C_Sockets_Tcp - Fatal编程技术网

Java 在C中以\0结尾的串联字符串

Java 在C中以\0结尾的串联字符串,java,c,sockets,tcp,Java,C,Sockets,Tcp,是否有一种方法可以将C中的串连接起来,并用符号\0分隔 比如说。我正在创建一个简单的程序,它由一个客户机(Java)和一个服务器(C)组成。java客户端发送一条消息,其中包含两个“部分”:操作(例如寄存器)和参数(用户名)。然后,服务器必须识别操作和参数并执行一些操作 问题是,操作和参数(两个字符串)必须以\0符号结尾,但这样做只会使服务器识别该操作(因为当它从客户端接收到消息时,在找到\0符号时会停止读取) 是否有一种方法可以从客户端接收消息作为“操作\0参数\0”,并识别操作字符串和参数字

是否有一种方法可以将C中的串连接起来,并用符号\0分隔

比如说。我正在创建一个简单的程序,它由一个客户机(Java)和一个服务器(C)组成。java客户端发送一条消息,其中包含两个“部分”:操作(例如寄存器)和参数(用户名)。然后,服务器必须识别操作和参数并执行一些操作

问题是,操作和参数(两个字符串)必须以\0符号结尾,但这样做只会使服务器识别该操作(因为当它从客户端接收到消息时,在找到\0符号时会停止读取)

是否有一种方法可以从客户端接收消息作为“操作\0参数\0”,并识别操作字符串和参数字符串

PD:我用TCP套接字实现这个程序,在客户端我使用printwriter发送消息

PD2:消息不能超过256字节


提前感谢

只需继续调用
recv
(在缓冲区中累积数据),直到您收到的数据包含两个零字节。一旦完成,解析接收到的数据以提取两个字符串

  • 清空缓冲区

  • 调用
    recv
    将(更多)数据读入缓冲区

  • 计算缓冲区已使用部分的零字节数。如果小于2,则转至步骤2

  • 从缓冲区中提取两个字符串。一个从缓冲区的开头开始。另一个在第一个零字节之后开始


  • 要将字符串拆分为令牌,通常使用
    strtok
    您真的在问如何在C字符串中允许\0吗?您可以使用类似“abcdef\0rtyuo\0\0”这样的字符串(注意末尾的2个零),然后在接收到2个连续的零时停止服务器并删除最后的零字节。同时确保发送字符串的总长度。可能在数据本身之前。如果您知道消息不能超过256个字节,则可以将长度调整为一个字节。请注意,默认情况下,Java使用UTF-16进行字符串编码。