【发布时间】:2014-07-15 10:41:37
【问题描述】:
我在 c 中通过套接字传输 int 数组时遇到问题。 htonl() 的正确用法是什么? 假设我有:
int arra[3]={6000,7000,8000};
和名为 new_socket 的套接字
如何正确地将其传输到套接字的另一端?
客户端正在通过以下代码读取它:
char buf[BUFLEN] = ""; // buffer for recv() calls
for (i = 0; i < nbytes; i += INTLEN) {
int file_port = ntohl(*(int *)&buf[i]);
【问题讨论】:
-
枚举发送方通过
htonl修改的数组之前发送,并在接收方使用ntohl再次完成接收之后.看起来您几乎已经完成了后半部分。 -
我无法修改客户端正在等待缓冲区并从中获取 int,仍然无法理解如何实现服务器
-
您的问题似乎是关于在发送之前对
arra数组“做什么”。为此,我告诉过你。实际套接字工作的责任是一个完全不相关的问题。您还应该知道,此设计假定int在客户端和服务器上的位宽相同;如果客户端是真正可移植的,那么可能不是真的。祝你好运。