使用PF_LOCAL和SOCK_STREAM 在函数socket和socketpair中,对于PF_LOCAL套接口,我们可以对protocol参数使用0值,这个是protocol参数唯一支持的值。因为到目前为止,如果函数socket和socketpair函数的domain参数为PF_LOCAL/PF_UNIX的时候,protocol的参数的唯一有效值为0. 使用PF_LOCAL和SOCK_DGRAM 当需要保留消息边界的时候,我们...
s = socket(PF_LOCAL,SOCK_DGRAM,0); if ( s == -1 ) perror("socket()"); 数 据报套接口对于PF_LOCAL套接口是很合适的,因为他们更可靠,并且他们可以保留信息边界。他们并不会在网络传输中丢失错误,而PF_INET数据报 会,因为他们保留在本地主机内部。然而,我们必须了解由内核缓冲区的缺少会造成PF_LOCAL...
通信协议类型,socket函数使用该参数选择通信协议族,其可以使用如下值: PF_UNIX,PF_LOCAL 本地通信 AF_INET,PF_INET IPV4协议 PF_INET6 IPV6协议 PF_IPX IPX-Novell协议 PF_NETLINK 内核用户界面设备 PF_X25 ITU-T X25/ISO-8208协议 PF_AX25 Amateur radio AX.25 PF_ATMPVC 原始ATM PVC访问 PF_APPLETALK...
PF_UNIX, unix_create }; static int __init af_unix_init(void) { ... sock_register(&unix_family_ops); ... return 0; } 所以从上面的代码可以指定,对于 Unix socket 的话,net_families[family]->create() 这行代码实际调用的是 unix_create() 函数。
const struct sockaddr* address:指定socket被绑定的协议地址。不同协议族使用不同的协议地址。PF_LOCAL协议族使用sockaddr_un指定协议地址: AI检测代码解析 struct sockaddr_un { sa_family_t sun_family; char sun_path[UNIX_PATH_MAX]; }; 1. 2. ...
内核会根据协议族(如AF_INET)找到对应的协议族处理结构体(pf_inet对于IPv4)。 然后,根据socket类型(如SOCK_STREAM)和协议编号(通常是0,表示自动选择),内核会选择具体的协议实现(如TCP)。 创建套接字实例: 内核会为新的socket分配一个套接字实例(struct socket)。 这个实例中包含了操作这个socket所需要的所有方法...
(PF_LOCAL,SOCK_STREAM,0,fd);/* 2. call fork ... */pid=fork();if(pid==0){/* 2.1 if fork returned zero, you are the child */close(fd[parentsocket]);/* Close the parent file descriptor */child(fd[childsocket]);}else{/* 2.2 ... you are the parent */close(fd[childsocket...
// AF_INET == PF_INETif(_sockfd<0){lg(Fatal,"socket create faild, sockfd: %d",_sockfd);exit(1);}lg(Info,"socket create success, sockfd: %d",_sockfd);// 2.绑定端口号// 2.1 准备数据struct sockaddr_in local;bzero(&local,sizeof(local));local.sin_family=AF_INET;local.sin_port=...
short int sin_family; // Address family 一般来说 AF_INET(地址族)PF_INET(协议族 ) unsigned short int sin_port; //sin_port存储端口号(使用网络字节顺序),在linux下,端口号的范围0~65535,同时0~1024范围的端口号已经被系统使用或保留 struct in_addr sin_addr; //存储IP地址 ...
对于BSD,是AF,对于POSIX是PF UNIX系统支持AF_INET,AF_UNIX,AF_NS等,而DOS,Windows中仅支持AF_INET,它是网际网区域. 在函数socketpair与socket的domain参数中有AF_UNIX,AF_LOCAL,AF_INET,PF_UNIX,PF_LOCAL,PF_INET.这几个参数有AF_UNIX=AF_LOCAL,PF_UNIX=PF_LOCAL,AF_LOCAL=PF_LOCAL,AF_INET=PF_INET....