linux网络编程(unix域流式套接字)

  unix域套接字--流式
1. 头文件
       #include <sys/un.h>
       
 2. 数据结构
       struct sockaddr_un {
        sa_family_t sun_family;
         // __SOCKADDR_COMMON (sun_);
         
        // #define __SOCKADDR_COMMON(sa_prefix) \                                                              
        // sa_family_t sa_prefix##family     
         // 替换原理,带参数的宏,实参替换形参(整个宏中所有的) 
                                                                   
         char sun_path[108]; // 字符串(unix域套接字文件的名)
       };


3. 服务端流程

       1. 创建套接字
          sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
          
       2. 绑定地址到socket
struct sockaddr_un server_addr;

server_addr.sun_family = AF_UNIX;
strcpy(server_addr.sun_path, "mypath");

ret = bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

 3. 设置为监听模式
ret = listen(sockfd, 10);
   
 4. 接收请求
   clientfd = accept(sockfd, NULL, NULL);
      
5. 接收数据
   ret = recv(clientfd, buf, sizeof(buf), 0);
   
 6. 发送数据
   ret = send(clientfd, buf, len, 0);
   
7. 关闭套接字
   close(clientfd);
   close(sockfd);
   
4. 客户端流程
 1. 创建套接字
          sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
          
         2. 连接服务器
          struct sockaddr_un server_addr;

server_addr.sun_family = AF_UNIX;
strcpy(server_addr.sun_path, "mypath");

ret = connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

         3. 发送数据
  ret = send(clientfd, buf, len, 0);

   

         4. 接收数据

   ret = recv(clientfd, buf, sizeof(buf), 0);
   
 5. 关闭套接字
   close(sockfd);
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值