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

标签 java c sockets tcp

有没有办法在 C 中连接字符串,并在它们之间用符号\0 分隔?

例如。我正在创建一个由客户端(Java 语言)和服务器(C 语言)组成的简单程序。 java 客户端发送的消息包含两个“部分”,操作(例如注册)和参数(用户名)。然后,服务器必须识别操作和参数并进行一些操作。

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

有没有办法以"OPERATION\0PARAMETER\0"的形式接收来自客户端的消息,并识别OPERATION 的字符串和PARAMETER 的字符串?

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

PD2:消息不能超过256字节

提前致谢

最佳答案

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

  1. 清空缓冲区。

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

  3. 计算缓冲区已用部分中零字节的数量。如果小于 2,则转到第 2 步。

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

关于java - 在 C 中以\0 结尾的串联字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461705/

相关文章:

java - 重定向到 java web-app 后无法获取 AuthenticationResult

c - C 中链表的问题

c - 是否有将 Arduino 代码转换为 C 代码的方法或教程?

c++ - 客户端的客户端 IP 是什么

java - 从文本文件 :  读取的第一个字符

java - Spring MVC 自定义格式化程序未触发

java - JDBC数据源由服务器管理?

python 套接字 : winerror 10056

java - Android Studio-通过HTTP连接到服务器的IP和端口

sockets - 两个浏览器如何同时监听 80 端口?