gpt4 book ai didi

c - 使用套接字一个一个地发送多个字符串时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:34 25 4
gpt4 key购买 nike

我是套接字编程的新手。需要将多个字符串一个一个地发送到服务器并收集结果字符串。

现在的问题是,在客户端使用发送/写入功能,所有的字符串都是从服务器一次性读取的。

//client.c
sendString(serversocket,"str1");

sendString(serversocket,"str2");

sendString(serversocket,"str3");

//server.c

char *buff=readstring(clientsocket);

printf("%s",buff) ;//output : str1str2str2

需要获取str1, str2 and str3...

我需要让它一个接一个地接收。我怎样才能做到这一点?任何帮助将不胜感激。

最佳答案

TCP 套接字是一个字节流 - 您必须在接收端拆分数据。

对于字符串,您可以在例如这两种方式之一:

客户:

  • 发送整数长度
  • 发送字符串数据

服务器:

  • 读取一个整数长度
  • 将这个字节数读入一个字符串

或者,您可以使用 0 终止:

客户:

  • 发送一个字符串后跟一个 0 字节

服务器:

  • 尽量读取,扫描0字节,提取字符串

您必须在服务器端处理这两种情况:

  • 每次调用 recv() 服务器接收 1 个字节
  • 服务器在对 recv()
  • 的一次调用中接收所有数据

关于c - 使用套接字一个一个地发送多个字符串时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com