内核会根据协议族(如AF_INET)找到对应的协议族处理结构体(pf_inet对于IPv4)。 然后,根据socket类型(如SOCK_STREAM)和协议编号(通常是0,表示自动选择),内核会选择具体的协议实现(如TCP)。 创建套接字实例: 内核会为新的socket分配一个套接字实例(struct socket)。 这个实例中包含了操作这个socket所需要的所有方法...
int ifd = socket(AF_LOCAL, sock_stream, 0); //AF_UNIX也可以,AF_INET是指网络套接字 2. 绑定 struct sockaddr_un struct sockaddr_un serv; serv.sun_family = AF_LOCAL; strcpy(serv.sun_path, "server.socket"); //server.socket此时还不存在的,它什么时候会存在呢 bind(ifd, (struct sockaddr ...
SOCK_STREAM提供面向连接的稳定数据传输,即TCP协议。SOCK_STREAM应用在C语言socket编程中,在进行网络连接前,需要用socket函数向系统申请一个通信端口。socket函数的使用方法如下:int socket(int domain, int type, int protocol);在参数表中,domain指定使用何种的地址类型,比较常用的有:PF_INET, AF_...
(又名AF_LOCAL,在POSIX1.g标准中指定),它代表地址家族(addressfamily):UNIX。其他比较旧的系统可能会将地址家族表示成域(domain)或协议家族(protocolfamily),并使用其缩写PF而非AF。类似地,AF_LOCAL(在2000~2001年标准化)将代替AF_UNIX 面向网络的 家族名:AF_INET 或者地址家族:因特网。另一个地址家族AF_INET...
建议:对于socketpair与socket的domain参数,使用PF_LOCAL系列,而在初始化套接口地址结构时,则使用AF_LOCAL. 例如:z = socket(PF_LOCAL,SOCK_STREAM,0); adr_unix.sin_family = AF_LOCAL;反馈 收藏
write(clifd,s,strlen(s));//也可以使用send(clifd,s,strlen(s),0);}return(void*)0; }intmain(intargc,char**arg) {intservfd;intret;servfd= socket(AF_LOCAL,SOCK_STREAM,0);if(-1==servfd) { perror("Can not create socket");return-1; ...
首先来看一下使用af_inet域以及本地环回地址来实现本地主机进程间通信。 服务进程创建监听套接字: [cpp]view plaincopy intser_afinet_listen(intport) { intlistenfd, on; structsockaddr_in seraddr; listenfd = socket(af_inet, sock_stream, 0); ...
父进程关闭读取的 fd[0],只保留写入的 fd[1]; 子进程关闭写入的 fd[1],只保留读取的 fd[0]; image 所以说如果需要双向通信,则应该创建两个管道。 到这里,我们仅仅解析了使用管道进行父进程与子进程之间的通信,但是在我们 shell 里面并不是这样的。
type:socket类型,常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET...
type:指定Socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的UDP服务应用; ...