- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 C 编程中的新网络套接字。我正在尝试制作一个简单的服务器 - 客户端。以下是我想要的:
...
//Binding to a port
struct sockaddr_in name;
name.sin_family = PF_INET;
name.sin_port = (in_port_t)htons(30000);
name.sin_addr.s_addr = htonl(INADDR_ANY);
...
sin_family -/usr/include/netinet/in.h - Linux 在哪里?如果您是专业人士,请告诉我我需要做什么。
最佳答案
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_);
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
你看到sockaddr_in
结构中有一个__SOCKADDR_COMMON(sin_)
,它是一个宏。现在让我们看看 /usr/include/i386-linux-gnu/bits/sockaddr.h 中的宏定义:
#define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family
和
#define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))
所以最终 sockaddr_in
被扩展为:
struct sockaddr_in
{
sa_family_t sin_family;
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
(sizeof (unsigned short int) -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
这就是 sin_family
进入 sockaddr_in
的方式。
关于c - struct sockaddr_in -/usr/include/netinet/in.h 中的 "sin_family"在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307412/
我正在从 Ubuntu 机器上的 python 向 vxworks 机器上的 C 程序发送一条 UDP 消息。 vxworks 机器上的 Endianness 与网络字节顺序不匹配,因此我被迫使用 n
如果我正在使用 struct sockaddr_in,地址族已经在我创建的任何套接字中指定。 此外,如果 sin_family 成员必须始终为 AF_INET,则使用 sin_family 成员似乎是
下面是一个有效的套接字创建示例(在 C 中): // Construct local address structure struct sockaddr_in servAddr;
我是 UNIX 套接字编程的新手,我想知道 sin_addr、sin_family 等中的“sin”是什么,简称?在 struct socketaddr_in 中“in”是什么意思或缩写是什么? 谢谢
这是我的问题: 我试图用适当的信息填充套接字地址结构,以便我可以在处理服务器和客户端之间通信的程序中使用它。这是服务器代码的一部分。问题是它会出现段错误。当我运行 gdb 时,它说当我将 AF_INE
我是 C 编程中的新网络套接字。我正在尝试制作一个简单的服务器 - 客户端。以下是我想要的: ... //Binding to a port struct sockaddr_in name; name
我是一名优秀的程序员,十分优秀!