查看: 2392|回复: 4

[原创] 【fireprime】Socket进程通信:CS走起

[复制链接]
  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-12-7 15:15:20 | 显示全部楼层 |阅读模式
    分享到:
    首先搭载一个server:
    1. #include <stdio.h>  
    2. #include <sys/types.h>  
    3. #include <sys/socket.h>  
    4. #include <sys/un.h>   
    5. #include <linux/kernel.h>
    6. #define UNIX_DOMAIN "/tmp/UNIX.domain"  


    7. int main(void)  
    8. {  
    9.     socklen_t clt_addr_len;  
    10.     int listen_fd;  
    11.     int com_fd;  
    12.     int ret;  
    13.     int i;  
    14.     static char recv_buf[1024];   
    15.     int len;  
    16.     struct sockaddr_un clt_addr;  
    17.     struct sockaddr_un srv_addr;  
    18.     listen_fd=socket(PF_UNIX,SOCK_STREAM,0);  
    19.     if(listen_fd<0)  
    20.     {  
    21.         perror("cannot create communication socket");  
    22.         return 1;  
    23.     }   
    24.       
    25.     //set server addr_param  
    26.     srv_addr.sun_family=AF_UNIX;  
    27.     strncpy(srv_addr.sun_path,UNIX_DOMAIN,sizeof(srv_addr.sun_path)-1);  
    28.     unlink(UNIX_DOMAIN);  
    29.     //bind sockfd & addr  
    30.     ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));  
    31.     if(ret==-1)  
    32.     {  
    33.         perror("cannot bind server socket");  
    34.         close(listen_fd);  
    35.         unlink(UNIX_DOMAIN);  
    36.         return 1;  
    37.     }  
    38.     //listen sockfd   
    39.     ret=listen(listen_fd,1);  
    40.     if(ret==-1)  
    41.     {  
    42.         perror("cannot listen the client connect request");  
    43.         close(listen_fd);  
    44.         unlink(UNIX_DOMAIN);  
    45.         return 1;  
    46.     }  
    47.     //have connect request use accept  
    48.     len=sizeof(clt_addr);  
    49.     com_fd=accept(listen_fd,(struct sockaddr*)&clt_addr,&len);  
    50.        
    51.     if(com_fd<0)  
    52.     {  
    53.         perror("cannot accept client connect request");  
    54.         close(listen_fd);  
    55.         unlink(UNIX_DOMAIN);  
    56.         return 1;  
    57.     }  
    58.     //read and printf sent client info  
    59.         printf("\n *******  print client info ****\n");
    60.     for(; ;)  
    61.     {  
    62.         memset(recv_buf,0,1024);  
    63.         int num=read(com_fd,recv_buf,sizeof(recv_buf));  
    64.         perror("Receive Message");   
    65.                 printf("Message from client (%d) :%s \n",num,recv_buf);   
    66.     }  
    67.     //close(com_fd);  
    68.    // close(listen_fd);  
    69.    // unlink(UNIX_DOMAIN);  
    70.     return 0;  
    71. }
    复制代码
    然后在搞一个client:
    1. #include <stdio.h>  
    2. #include <sys/types.h>  
    3. #include <sys/socket.h>  
    4. #include <sys/un.h>  
    5. #include <linux/kernel.h>
    6. #define UNIX_DOMAIN "/tmp/UNIX.domain"  
    7. int main(void)  
    8. {  
    9.     int connect_fd;  
    10.     int ret;  
    11.     char snd_buf[1024];  
    12.     int i;  
    13.     static struct sockaddr_un srv_addr;  
    14.        
    15.    //creat unix socket  
    16.     connect_fd=socket(PF_UNIX,SOCK_STREAM,0);  
    17.     if(connect_fd<0)  
    18.     {  
    19.         perror("cannot create communication socket");  
    20.         return 1;  
    21.     }     
    22.     srv_addr.sun_family=AF_UNIX;  
    23.     strcpy(srv_addr.sun_path,UNIX_DOMAIN);  
    24.        
    25.    //connect server  
    26.     ret=connect(connect_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));  
    27.     if(ret==-1)  
    28.     {  
    29.         perror("cannot connect to the server");  
    30.         close(connect_fd);  
    31.         return 1;  
    32.     }  
    33.     memset(snd_buf,0,1024);  
    34.     strcpy(snd_buf,"Hello,I am client");  
    35. //send info server  
    36.     for(i =0;i <5; i++)
    37.         {
    38.                 perror("send message");
    39.         write(connect_fd,snd_buf,sizeof(snd_buf));  
    40.                 sleep(2);
    41.      }
    42.     close(connect_fd);  
    43.     return 0;  
    44. }  
    复制代码
    最后编译运行跑起来,哈哈,makefile走起!
    1. server:server.c
    2.         gcc -o  server server.c
    3. client:client.c
    4.         gcc -o client client.c
    5. .PHONY:clean
    6. clean:
    7.         -rm -rf server client
    8.        
    复制代码
    运行:
    runing.jpg
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-12-7 15:15:47 | 显示全部楼层
    6666,顶起来~·6666,顶起来~·
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-3-22 09:25
  • 签到天数: 115 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2015-12-7 15:24:59 | 显示全部楼层
    火急火燎地赶来顶贴 ,哔了狗了   ……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-3-5 10:19
  • 签到天数: 652 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-12-7 16:41:04 | 显示全部楼层
    路过。。。。。。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-12-7 18:32:38 | 显示全部楼层
    wudianjun2001 发表于 2015-12-7 15:23
    路过看看。。。。。

    :victory求助指点
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 07:42 , Processed in 0.147219 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.