当使用伯克利套接字api时,通过读取/发送或写入/接收呼叫发送的内容的数据类型是什么?例如 -什么是通过套接字发送的内容的数据类型?
char *msg = "Our Message!";
int len, bytes_sent;
len = strlen(msg);
bytes_sent = send(sockfd, msg, len, 0);
在这段代码
,我们使用的是char类型,但我们只限于char类型,因为发送/写/ SENDTO通常采取void *
类型。我也看到过,如果我们发送一些int,它可能实际上存储在小端/大端,如果它们的端点不匹配,会导致问题b/w源/目标。那么为什么char
类型也遭受这个问题呢?
另外像C和C++这样的不同语言也有不同的大小char
,那为什么这不是问题呢?如果套接字不关心任何type
,只是将内容视为缓冲区,为什么我们不看到随不同tcp服务器/客户机使用不同语言编写并相互通信时的数据随机损坏?
总之,可以通过套接字安全地发送什么值(类型)?
“不同的语言像C和C++有不同的字符大小”不,在C和C++中,字符的大小都是1. –
@NeilButterworth哦所以字面'a'的大小必须是4 = –
最安全的方法是发送一个字节缓冲区,'char'总是1个字节。所有为此设计的语言都有这样的数据类型。 – DeiDei