【问题标题】:How to send multiple packages together?如何同时发送多个包裹?
【发布时间】:2019-10-03 12:53:03
【问题描述】:

如何组合一次发送所有内容?

int data = 5;
int data2 = 15;
int data3 = 25;

sendto(sock, (char*)&data, sizeof data, 0, (LPSOCKADDR)&ipAddr, sizeipAddr);
sendto(sock, (char*)&data2, sizeof data2, 0, (LPSOCKADDR)&ipAddr, sizeipAddr);
sendto(sock, (char*)&data3, sizeof data3, 0, (LPSOCKADDR)&ipAddr, sizeipAddr);

【问题讨论】:

  • 您可以使用ints 的数组。但是如果发送方和接收方对整数使用不同的字节顺序或int 的大小不同,您可能会遇到其他问题。
  • 之前自己创建缓冲区还是创建struct对数据进行分组?
  • 如果您正在学习套接字的工作原理,那很好。对于更大规模的消息传递,请使用协议缓冲区、平面缓冲区、capnproto 或 thrift 之类的东西。
  • 你可能对writev感兴趣。
  • @DavidRanieri 好的,但我喜欢你的例子,但我不能使用它:|

标签: c++ c udp winsock winsock2


【解决方案1】:

您可以创建一个数组并传递数组的地址和大小:

int data[3] = {5, 15  25};

sendto(sock, (char*)&data[0], sizeof(data), 0, (LPSOCKADDR)&ipAddr, sizeipAddr);

但这对于通过网络发送数据来说是一种非常糟糕的方式。您必须考虑字节顺序和可变大小。

【讨论】:

  • 这是我需要的,谢谢,无花果的顺序。 :)
猜你喜欢
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2017-11-06
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多