“在哪里?”;辛家;在-/usr/include/netinet/in.h中的结构sockaddr_中?
我是c编程中的新网络套接字。我想做一个简单的服务器客户端。以下是我想要的:“在哪里?”;辛家;在-/usr/include/netinet/in.h中的结构sockaddr_中?,c,linux,sockets,network-programming,archlinux,C,Linux,Sockets,Network Programming,Archlinux,我是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); ... sinu family-/usr/include/netinet/in.h-Linux在哪里?如
...
//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);
...
sinu 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\u结构中有一个SOCKADDR\u COMMON(sin),它是一个宏。
现在让我们看看/usr/include/i386 linux gnu/bits/sockaddr.h中的宏定义:
#define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family
及
因此,中的sockaddr\u最终扩展为:
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_的非常感谢@sunny1304!
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)];
};