TA的每日心情 | 开心 2020-11-23 14:54 |
---|
签到天数: 19 天 连续签到: 1 天 [LV.4]偶尔看看III
|
首先搭载一个server:- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <linux/kernel.h>
- #define UNIX_DOMAIN "/tmp/UNIX.domain"
- int main(void)
- {
- socklen_t clt_addr_len;
- int listen_fd;
- int com_fd;
- int ret;
- int i;
- static char recv_buf[1024];
- int len;
- struct sockaddr_un clt_addr;
- struct sockaddr_un srv_addr;
- listen_fd=socket(PF_UNIX,SOCK_STREAM,0);
- if(listen_fd<0)
- {
- perror("cannot create communication socket");
- return 1;
- }
-
- //set server addr_param
- srv_addr.sun_family=AF_UNIX;
- strncpy(srv_addr.sun_path,UNIX_DOMAIN,sizeof(srv_addr.sun_path)-1);
- unlink(UNIX_DOMAIN);
- //bind sockfd & addr
- ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));
- if(ret==-1)
- {
- perror("cannot bind server socket");
- close(listen_fd);
- unlink(UNIX_DOMAIN);
- return 1;
- }
- //listen sockfd
- ret=listen(listen_fd,1);
- if(ret==-1)
- {
- perror("cannot listen the client connect request");
- close(listen_fd);
- unlink(UNIX_DOMAIN);
- return 1;
- }
- //have connect request use accept
- len=sizeof(clt_addr);
- com_fd=accept(listen_fd,(struct sockaddr*)&clt_addr,&len);
-
- if(com_fd<0)
- {
- perror("cannot accept client connect request");
- close(listen_fd);
- unlink(UNIX_DOMAIN);
- return 1;
- }
- //read and printf sent client info
- printf("\n ******* print client info ****\n");
- for(; ;)
- {
- memset(recv_buf,0,1024);
- int num=read(com_fd,recv_buf,sizeof(recv_buf));
- perror("Receive Message");
- printf("Message from client (%d) :%s \n",num,recv_buf);
- }
- //close(com_fd);
- // close(listen_fd);
- // unlink(UNIX_DOMAIN);
- return 0;
- }
复制代码 然后在搞一个client:- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/un.h>
- #include <linux/kernel.h>
- #define UNIX_DOMAIN "/tmp/UNIX.domain"
- int main(void)
- {
- int connect_fd;
- int ret;
- char snd_buf[1024];
- int i;
- static struct sockaddr_un srv_addr;
-
- //creat unix socket
- connect_fd=socket(PF_UNIX,SOCK_STREAM,0);
- if(connect_fd<0)
- {
- perror("cannot create communication socket");
- return 1;
- }
- srv_addr.sun_family=AF_UNIX;
- strcpy(srv_addr.sun_path,UNIX_DOMAIN);
-
- //connect server
- ret=connect(connect_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));
- if(ret==-1)
- {
- perror("cannot connect to the server");
- close(connect_fd);
- return 1;
- }
- memset(snd_buf,0,1024);
- strcpy(snd_buf,"Hello,I am client");
- //send info server
- for(i =0;i <5; i++)
- {
- perror("send message");
- write(connect_fd,snd_buf,sizeof(snd_buf));
- sleep(2);
- }
- close(connect_fd);
- return 0;
- }
复制代码 最后编译运行跑起来,哈哈,makefile走起!- server:server.c
- gcc -o server server.c
- client:client.c
- gcc -o client client.c
- .PHONY:clean
- clean:
- -rm -rf server client
-
复制代码 运行:
|
|