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

时间:2015-04-05 20:10:47

标签: java c sockets tcp

有没有办法让C中的连接字符串用符号\ 0分隔?

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

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

有没有办法从客户端接收消息“OPERATION \ 0PARAMETER \ 0”并识别OPERATION的字符串和PARAMETER的字符串?

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

PD2:消息不能超过256字节

提前致谢

1 个答案:

答案 0 :(得分:1)

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

  1. 清空缓冲区。

  2. 调用recv将(更多)数据读入缓冲区。

  3. 计算缓冲区使用部分中的零字节数。如果小于2,请转到步骤2.

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