安福县住房和城乡建设局网站,北京市网站建设 维护推荐,wordpress 制作微信小程序,网页制作公司的职员目录 本地套接字 本地套接字
TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信#xff0c;类似的#xff0c;一般采用TCP的通信流程 生成套接字文件 #includearpa/inet.h
#includestdio.h
#includestdlib.h
#includeunistd.h类似的一般采用TCP的通信流程 生成套接字文件 #includearpa/inet.h
#includestdio.h
#includestdlib.h
#includeunistd.h
#includestring.h
#includesys/un.hint main(){unlink(client.sock);//1.创建套接字int cfdsocket(AF_LOCAL,SOCK_STREAM,0);if(cfd-1){perror(socket);exit(-1);}//2.绑定本地套接字文件struct sockaddr_un addr;addr.sun_familyAF_LOCAL;strcpy(addr.sun_path,client.sock);int retbind(cfd,(struct sockaddr *)addr,sizeof(addr));if(ret-1){perror(bind);exit(-1);}//3.连接服务器struct sockaddr_un seraddr;seraddr.sun_familyAF_LOCAL;strcpy(seraddr.sun_path,server.sock);retconnect(cfd,(struct sockaddr *)seraddr,sizeof(addr));if(ret-1){perror(connect);exit(-1);}//4.通信int num0;while(1){char buf[128];sprintf(buf,hello,i am client:%d\n,num);send(cfd,buf,strlen(buf)1,0);printf(clientsay:%s\n,buf);//接收数据int lenrecv(cfd,buf,sizeof(buf),0);if(len-1){perror(recv);exit(-1);}else if(len0){printf(server closed...\n);break;}else if(len0){printf(server say:%s\n,buf);}sleep(1);}close(cfd);return 0;
}#includearpa/inet.h
#includestdio.h
#includestdlib.h
#includeunistd.h
#includestring.h
#includesys/un.hint main(){unlink(server.sock);//1.创建套接字int lfdsocket(AF_LOCAL,SOCK_STREAM,0);if(lfd-1){perror(socket);exit(-1);}//2.绑定本地套接字文件struct sockaddr_un addr;addr.sun_familyAF_LOCAL;strcpy(addr.sun_path,server.sock);int retbind(lfd,(struct sockaddr *)addr,sizeof(addr));if(ret-1){perror(bind);exit(-1);}//3.监听retlisten(lfd,100);if(ret-1){perror(listen);exit(-1);}//4.等待客户端连接struct sockaddr_un cliaddr;int lensizeof(cliaddr);int cfdaccept(lfd,(struct sockaddr *)cliaddr,len);if(cfd-1){perror(accepr);exit(-1);}printf(client socket filename:%s\n,cliaddr.sun_path);//5.通信while(1){char buf[128];int lenrecv(cfd,buf,sizeof(buf),0);if(len-1){perror(recv);exit(-1);}else if(len0){printf(client closed...\n);break;}else if(len0){printf(client say:%s\n,buf);send(cfd,buf,len,0);}}close(cfd);close(lfd);return 0;
}