server.c
#include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<sys/un.h>
6 #include<netinet/in.h>
7 #include<string.h>
8 #include<strings.h>
9 #include<stddef.h>
10 #define SERFILE "server.socket"
11
12 int main()
13 {
14 int sfd,cfd,num,len;
15 struct sockaddr_un ser_addr,cli_addr;
16 char buf[BUFSIZ];
17
18 sfd=socket(AF_LOCAL,SOCK_STREAM,0);
19 unlink(SERFILE);
20 bzero(&ser_addr,sizeof(ser_addr));
21 ser_addr.sun_family=AF_LOCAL;
22 strcpy(ser_addr.sun_path,SERFILE);
23
24 int ser_len=offsetof(struct sockaddr_un,sun_path)+strlen(ser_addr.sun_path);
25 bind(sfd,(struct sockaddr*)&ser_addr,ser_len);
26 listen(sfd,20);
27 int clilen=sizeof(cli_addr);
28 while(1)
29 {
30 cfd=accept(sfd,(struct sockaddr*)&cli_addr,&clilen);
31 ser_len-=offsetof(struct sockaddr_un,sun_path);
32 ser_addr.sun_path[ser_len]='\0';
33
34 printf("client bind filename %s\n",cli_addr.sun_path);
35
36 while((num= read(cfd,buf,sizeof(buf)))>0)
37 {
38 printf("buf1==%s\n",buf);
39 buf[strlen(buf)]='M';
40 buf[strlen(buf)+1]='A';
41 buf[strlen(buf)+2]='Y';
42 buf[strlen(buf)+3]='E';
43 buf[strlen(buf)+4]='\0';
44
45 printf("buf2==%s\n",buf);
46 write(cfd,buf,num);
47 }
48 close(cfd);
49 }
50
51 return 0;
52 }
client.c
1 #include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<sys/un.h>
6 #include<netinet/in.h>
7 #include<string.h>
8 #include<strings.h>
9 #include<stddef.h>
10 #define SERFILE "server.socket"
11 #define CLIFILE "client.socket"
12 int main()
13 {
14 int sfd,cfd,num;
15 struct sockaddr_un ser_addr,cli_addr;
16 char buf[BUFSIZ];
17
18 sfd=socket(AF_LOCAL,SOCK_STREAM,0);
19 unlink(CLIFILE);
20
21 bzero(&ser_addr,sizeof(ser_addr));
22 ser_addr.sun_family=AF_LOCAL;
23 strcpy(ser_addr.sun_path,CLIFILE);
24
25 int ser_len=offsetof(struct sockaddr_un,sun_path)+strlen(ser_addr.sun_path);
26 bind(sfd,(struct sockaddr*)&ser_addr,ser_len);
27 listen(sfd,20);
28
29 bzero(&cli_addr,sizeof(cli_addr));
30 cli_addr.sun_family=AF_LOCAL;
31 strcpy(cli_addr.sun_path,SERFILE);
32 int cli_len=offsetof(struct sockaddr_un,sun_path)+strlen(cli_addr.sun_path);
33 connect(sfd,(struct sockaddr* )&cli_addr,cli_len) ;
34
35 while(1)
36 {
37 fgets(buf,sizeof(buf),stdin);
38 num=write(sfd,buf,strlen(buf));
39 if(num<=0)
40 printf("write over1 sfd=%d\n",sfd);
41 num= read(sfd,buf,sizeof(buf));
42 num= write(STDOUT_FILENO,buf,strlen(buf));
43 if(num<=0)
44 printf("write2 over! sfd=%d\n",sfd);
45 }
46
47 return 0;
48 }
#include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<sys/un.h>
6 #include<netinet/in.h>
7 #include<string.h>
8 #include<strings.h>
9 #include<stddef.h>
10 #define SERFILE "server.socket"
11
12 int main()
13 {
14 int sfd,cfd,num,len;
15 struct sockaddr_un ser_addr,cli_addr;
16 char buf[BUFSIZ];
17
18 sfd=socket(AF_LOCAL,SOCK_STREAM,0);
19 unlink(SERFILE);
20 bzero(&ser_addr,sizeof(ser_addr));
21 ser_addr.sun_family=AF_LOCAL;
22 strcpy(ser_addr.sun_path,SERFILE);
23
24 int ser_len=offsetof(struct sockaddr_un,sun_path)+strlen(ser_addr.sun_path);
25 bind(sfd,(struct sockaddr*)&ser_addr,ser_len);
26 listen(sfd,20);
27 int clilen=sizeof(cli_addr);
28 while(1)
29 {
30 cfd=accept(sfd,(struct sockaddr*)&cli_addr,&clilen);
31 ser_len-=offsetof(struct sockaddr_un,sun_path);
32 ser_addr.sun_path[ser_len]='\0';
33
34 printf("client bind filename %s\n",cli_addr.sun_path);
35
36 while((num= read(cfd,buf,sizeof(buf)))>0)
37 {
38 printf("buf1==%s\n",buf);
39 buf[strlen(buf)]='M';
40 buf[strlen(buf)+1]='A';
41 buf[strlen(buf)+2]='Y';
42 buf[strlen(buf)+3]='E';
43 buf[strlen(buf)+4]='\0';
44
45 printf("buf2==%s\n",buf);
46 write(cfd,buf,num);
47 }
48 close(cfd);
49 }
50
51 return 0;
52 }
client.c
1 #include<stdio.h>
2 #include<unistd.h>
3 #include<sys/types.h>
4 #include<sys/socket.h>
5 #include<sys/un.h>
6 #include<netinet/in.h>
7 #include<string.h>
8 #include<strings.h>
9 #include<stddef.h>
10 #define SERFILE "server.socket"
11 #define CLIFILE "client.socket"
12 int main()
13 {
14 int sfd,cfd,num;
15 struct sockaddr_un ser_addr,cli_addr;
16 char buf[BUFSIZ];
17
18 sfd=socket(AF_LOCAL,SOCK_STREAM,0);
19 unlink(CLIFILE);
20
21 bzero(&ser_addr,sizeof(ser_addr));
22 ser_addr.sun_family=AF_LOCAL;
23 strcpy(ser_addr.sun_path,CLIFILE);
24
25 int ser_len=offsetof(struct sockaddr_un,sun_path)+strlen(ser_addr.sun_path);
26 bind(sfd,(struct sockaddr*)&ser_addr,ser_len);
27 listen(sfd,20);
28
29 bzero(&cli_addr,sizeof(cli_addr));
30 cli_addr.sun_family=AF_LOCAL;
31 strcpy(cli_addr.sun_path,SERFILE);
32 int cli_len=offsetof(struct sockaddr_un,sun_path)+strlen(cli_addr.sun_path);
33 connect(sfd,(struct sockaddr* )&cli_addr,cli_len) ;
34
35 while(1)
36 {
37 fgets(buf,sizeof(buf),stdin);
38 num=write(sfd,buf,strlen(buf));
39 if(num<=0)
40 printf("write over1 sfd=%d\n",sfd);
41 num= read(sfd,buf,sizeof(buf));
42 num= write(STDOUT_FILENO,buf,strlen(buf));
43 if(num<=0)
44 printf("write2 over! sfd=%d\n",sfd);
45 }
46
47 return 0;
48 }