首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux网络套接字//accept参数为什么不用struct sockaddr结构体?解决办法

2012-04-10 
linux网络套接字//accept参数为什么不用struct sockaddr结构体?C/C++ codestruct sockaddr_in fromaddr{}

linux网络套接字//accept参数为什么不用struct sockaddr结构体?

C/C++ code
    struct sockaddr_in fromaddr={};    socklen_t len;        int sd = accept(sockfd, (struct sockaddr*)&fromaddr,&len);


[解决办法]
因为struct sockaddr兼容所有其他地址类型,因为第一个字段都是一样的,那就是:

sa_family_t sa_family;

所以只要解析为sockaddr,获取sa_family字段,然后switch case转化为具体某个类型的地址,比如IPV4,IPV6,UN。

The <sys/socket.h> header shall define the sockaddr structure that includes at least the following members:

sa_family_t sa_family Address family.
char sa_data[] Socket address (variable-length data).

热点排行