首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >struct "sockaddr_in servaddr,clientaddr;“是什么意思?

struct "sockaddr_in servaddr,clientaddr;“是什么意思?
EN

Stack Overflow用户
提问于 2017-03-07 14:47:53
回答 2查看 3.1K关注 0票数 0

struct sockaddr_in servaddr, cliaddr;

我是套接字编程的新手。

在c中套接字编程中的这句话是什么意思?

我们要创建一个名为sockaddr_in的结构吗?servaddrcliaddr是成员吗?为什么没有提到它们的数据类型?

EN

回答 2

Stack Overflow用户

发布于 2017-03-07 14:53:16

在c中套接字编程中的这句话是什么意思?

它声明了两个struct sockaddr_in类型的未初始化变量。

我们要创建一个名为sockaddr_in的结构吗?

不是的。必须已经定义了它才能声明变量,否则您的程序格式不正确。

以及servaddrcliaddr是成员吗?

不是的。

为什么没有提到他们的数据类型?

它是。查看第一个问题的答案。

票数 4
EN

Stack Overflow用户

发布于 2017-06-02 16:24:25

在Unix套接字中,header netinet/in.h定义了一个struct类型sockaddr_in,如下所示:

代码语言:javascript
运行
复制
struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET, AF_INET6
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};

struct in_addr {
    unsigned long s_addr;          // load with inet_pton()
};

(参考:http://beej.us/guide/bgnet/output/html/multipage/sockaddr_inman.html)

您的servaddrcliaddr是sockaddr_in -type结构的名称。它们都有(至少在Unix中)四个成员(short sin_family等)。(其中一个成员是名为sin_addrstruct类型in_addr,它是在两行之后定义的,具有一个成员unsigned long s_addr。只有一个成员的结构是有原因的,你也可以在stackoverflow中找到解释。)

如果你想使用sockaddr_in,你必须对netinet/in.h使用#include <netinet/in.h>或Windows等效物(除非你自己定义结构)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42641936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档