我们知道 Recvfrom 函数有以下概要
SYNOPSIS
#include <sys/socket.h>
int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
from 具有 sockaddr 的结构。
struct sockaddr {
__uint8_t sa_len; // total length
sa_family_t sa_family; // [XSI] address family
char sa_data[14]; // [XSI] addr value (actually larger)
};
但 sockaddr 似乎无法保存 IP 地址。
recvfrom 不应该使用 struct socaddr_in * from 因为
struct sockaddr_in {
__uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sin_addr 将给出 IP 地址。这是一个有效的假设吗?