本地进程通信
效果图:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/un.h>
#include<sys/socket.h>
#define Backlog 5
//服务器
int main(int argc,const char** argv)
{
//创建套接字
int serfd=socket(AF_LOCAL,SOCK_STREAM,0);
if(0>serfd)
{
perror("sockfd");
return EXIT_FAILURE;
}
//初始化套接字
struct sockaddr_un addr={
};
addr.sun_family=AF_LOCAL;
strcpy(addr.sun_path,"sock");
socklen_t addrlen=sizeof(addr);
//绑定
if(0>bind(serfd,(struct sockaddr*)&addr,addrlen))
{
perror("bind");
return EXIT_FAILURE;
}
//监听
if(listen(serfd,Backlog))
{
perror("listen");
return EXIT_FAILURE;
}
printf("等待链接....\n");
//等待链接
int fd=accept(serfd,(struct sockaddr*)&addr,&addrlen);
if(0>fd)
{
perror("accept");
return EXIT_FAILURE;
}
//接受/发送数据
char buf[4096]={
};
size_t buf_size=sizeof(buf);
for(;;)
{
printf("recv...");fflush(stdout);
size_t ret_size=read(fd,buf,buf_size);
if(0==ret_size)
{
printf("网络中断\n");
break;
}
if