如何用socket将一个数组send出去?

c语言,如何用socket将比如一个float 类型的数组a[3]={1,2,3,4}传出去?接收端又如何处理?

转成byte数组,然后socket直接send发送。接收端也是接收到byte数组得到原始数据,然后再转换回来

应该以文本串的格式传出去,而不是二进制格式传出去,因为存在大端和小端字节序的问题,具体请参考《unix网络编程》数据格式那一节的内容。

  1. 应该注意: 当发送端发送自定义类型(如: 数组, 结构体)的数据时, 接收端应该提前知晓这个自定义类型(同常会有文档进行定义),否则收到的数据流根本无从解析,
  2. 如果接收端已知道接收的数据类型, 此时只需要准备一个足够大的内存(可以存储下这个类型),直接调用系统API接收, 然后进行类型强制转换; ``` //发送端 float array[5] = {1.0, 2.0, 3.0, 4.0, 5.0} send(sockfd, array, sizeof(array), 0 );

//接收端
char buf[2048] = { 0 }
float recv = NULL;
recv(sockfd, buf, sizeof(buf), 0);
recv = (float
)buf;

3. 在发送/接收数据过程中, 是以数据流进行处理的, 所以无大小端字节序问题;

例:


 float a[3]={1,2,3};
send(sock,(char*)a,sizeof(a),0);

float buffer[3]={0};
rec(soc,(char*)buffer,sizeof(buffer),0);