使用套接字发送/接收/操作字符串

时间:2015-12-27 22:17:21

标签: c string sockets

我在服务器和客户端之间发送和接收带套接字的字符串时遇到一些问题。在此代码中,首先服务器发送"建立连接(" connessione avvenuta"意大利语)到客户端(在屏幕上打印),然后客户端扫描字符串并将其发送到服务器,删除元音并再次发送给客户端。 当我用客户端打印它时,字符串末尾出现奇怪的字符,我想因为我没有把它关闭。怎么做?

[String!]

1 个答案:

答案 0 :(得分:1)

使用TCP协议,send()和recv()不必写入/读取参数中给出的长度。您需要检查返回值以了解在套接字上写入/读取的字节数。

有两种简单的方法可以在套接字上发送/读取字符串:

  • 使用标题 在套接字上编写的数据包中,包含字符串之前的字符串大小 例如,如果你写“你好”,你将发送的数据包将形成如下:

      

    + --------- + --------------- +
      | uint8_t | char [size] |
      + -------------------------- +
      | 0x5 | “你好” |
      + --------- + --------------- +

    使用此方法,当您在套接字上读取时,首先读取标头(示例中为1个字节),然后读取N个字节以获取完整的字符串。
    不要忘记在字符串的末尾添加'\ 0'。

  • 在字符串的末尾加上'/ 0'。

      

    + ------------------ +
      | char [size + 1] |
      + ------------------ +
      | “你好\ 0” |
      + ------------------ +

    通过这种方式,您可以读取套接字,直到得到'\ 0'