本地socket通信

1.server

View Code
 20 #include <stdio.h>

 21 #include <string.h>

 22 #include <stdlib.h>

 23 #include <unistd.h>

 24 #include <sys/socket.h>

 25 #include <sys/un.h>

 26 

 27 #define PATH "./tt"

 28 

 29 int main(int argc ,char *argv[])

 30 {

 31     int sockfd = 0;

 32     struct sockaddr_un addr;

 33     unlink(PATH);  

 34     addr.sun_family = AF_UNIX;

 35     strcpy(addr.sun_path,PATH);

 36 

 37     unsigned int len = strlen(addr.sun_path) + sizeof(addr.sun_family);

 38     sockfd = socket(AF_UNIX,SOCK_DGRAM,0);

 39     if(sockfd < 0 )

 40     {

 41         perror("socket error");

 42         exit(-1);

 43     }

 44 

 45     if(bind(sockfd,(struct sockaddr *)&addr,len) < 0)

 46     {

 47         perror("bind error");

 48         close(sockfd);

 49         exit(-1);

 50     }

 51     printf("Bind is ok\n");

 52 

 53     while(1)

 54     {

 55         char recv_buf[20] = "";

 56         recvfrom(sockfd,recv_buf,sizeof(recv_buf),0,(struct sockaddr*)&addr,&len);

 57         printf("Recv: %s\n",recv_buf);

 58     }

 59     return 0;

 60 

 61 }

2.client

View Code
#include <stdio.h>

 19 #include <string.h>

 20 #include <unistd.h>

 21 #include <stdlib.h>

 22 #include <sys/socket.h>

 23 #include <sys/un.h>

 24 

 25 #define PATH "./tt"

 26 

 27 int main(int argc,char *argv[])

 28 {

 29     int sockfd = 0;

 30     struct sockaddr_un addr;

 31     bzero(&addr,sizeof(addr));

 32 

 33     addr.sun_family = AF_UNIX;

 34     strcpy(addr.sun_path,PATH);

 35 

 36     sockfd = socket(AF_UNIX,SOCK_DGRAM,0);

 37     if(sockfd < 0)

 38     {

 39         perror("socket error");

 40         exit(-1);

 41     }

 42 

 43     while(1)

 44     {

 45         static int counter = 0;

 46         char send_buf[20] = "";

 47         counter++;

 48         sprintf(send_buf,"Counter is %d",counter);

 49         int len = strlen(addr.sun_path)+sizeof(addr.sun_family);

 50         sendto(sockfd,send_buf,strlen(send_buf),0,(struct sockaddr*)&addr,len);

 51         printf("Send: %s\n",send_buf);

 52         sleep(1);

 53     }

 54     return 0;

 55 }

 

 

你可能感兴趣的:(socket通信)