Unix域协议并不是一个实际的协议族,它只是在现一台主机上进行客户-服务通信时,使用与在不同主机上的客户和服务器间通信时相同的API的一种方法 ,当客户和服务器在同一台主机上时,Unix域协议 是IPC通信方式的一个替代品

使用Unix域套接口有三个原因:

1、当通信双方在同一台主机上时,Unix域套接口的速度通常是TCP套接口的两倍

2、Unix域套接口可以用来在同一台主机上的各进程之间传递描述字

3、Unix域套接口的较新实现中可以向服务器提供客户的凭证,这能提供附加的安全检查

Unix域套接口地址结构定义在<sys/un.h>头文件中,其结构定义如下:

struct sockaddr_un
{uint8_t sun_len;sa_family_t sun_family;//AF_LOCALchar sun_path[104]; //null-terminated pathname
};

套接口的捆绑如下:

#include <sys/socket.h>
#include <sys/un.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>int main(int argc, char **argv)
{int sockfd;socklen_t len;struct sockaddr_un addr1, addr2;if (argc != 2) {printf("usage: unixbind <pathname>\n");return -1;}sockfd = socket(AF_LOCAL, SOCK_STREAM, 0);    unlink(argv[1]);bzero(&addr1, sizeof(addr1));addr1.sun_family = AF_LOCAL;strncpy(addr1.sun_path, argv[1], sizeof(addr1.sun_path) - 1);if (bind(sockfd, (struct sockaddr*)&addr1, SUN_LEN(&addr1)) < 0) {printf("bind error:%s\n", strerror(errno));return -1;}    len = sizeof(addr2);if (getsockname(sockfd, (struct sockaddr*)&addr2, &len) < 0) {printf("getsockname error:%s\n", strerror(errno));close(sockfd);return -1;}printf("bound name=%s, returned len=%d\n", addr2.sun_path, len);exit(0);return 0;
}

网络编程学习笔记(Unix域套接口地址)相关推荐

  1. UNIX网络编程读书笔记:套接口地址结构

    前言 大多数套接口函数都需要一个指向套接口地址结构的指针作为参数.每个协议族都定义它自己的套接口地址结构.这些结构的名字均以"sockaddr_"开头,并以对应每个协议族的唯一后缀 ...

  2. [Linux网络编程学习笔记]套接字地址结构

    好久没有看那Linux网络编程这本书了,今天看到了重点部分-TCP套接字.下面先来看看套接字的地址结构 Linux系统的套接字可以支持多种协议,每种不同的协议都是用不同的地址结构.在头文件<li ...

  3. 网络编程学习笔记(基本套接口选项)

    SO_BROADCAST套接口选项: 此选项使能或禁止进程发送广播消息的能力.只有数据报套接口支持广播,并且还必须是在支持广播消息的网络上(例如以太网.令牌网).不能在一个点对点链路上进行广播. SO ...

  4. 网络编程学习笔记(IPv4套接口选项)

    这些选项级别为IPPROTO_IP IP_HDRINCL: 如果此选项给一个原始IP套接口,必须为所有发判定以此原始套接口上的数据报构造自己的IP头部.一般情况下,内核为发送到原始套接口上的数据报构造 ...

  5. 网络编程学习笔记(TCP套接口选项)

    其套接口级别为IPPROTO_TCP TCP_KEEPALIVE: 指定TCP开始发送保持存活探测分节前以秒为单位的连接空闲时间.此选项在SO_KEEPALIVE套接口选项打开时才有效 TCP_MAX ...

  6. [Linux网络编程学习笔记]索引

    一.Linux基本知识 [学习笔记]Linux平台的文件I/O操作 [学习笔记]Linux平台的文件,目录及操作 [Linux学习笔记]标准输入输出 [Linux学习笔记]进程概念及控制 [Linux ...

  7. 15Java网络编程学习笔记

    Java网络编程学习笔记 文章目录 1 网络基础 1.1 网络通信 1.2 网络 1.3 IP地址 1.5 域名 1.6 端口号 1.7 网络通信协议 1.8 TCP协议 1.9 UDP协议 2 In ...

  8. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

  9. 编程开发:Linux网络编程学习笔记

    非常全面.通俗易懂.值得借鉴的Linux网络编程学习笔记.关键字:linux linux编程 网络编程 linux网络编程 下载地址:点我下载 特别说明:本资源收集于网络,版权归原作者及版权商所有,仅 ...

最新文章

  1. 批量修改mp3文件的title等
  2. 验证异常处理调用顺序
  3. Extjs 更换主题(转载)
  4. 多重 for 循环,如何提高效率?
  5. C++|Qt工作笔记-杀死进程(Linux与Windows通用)
  6. SpringBoot2 集成测试组件,七种测试手段对比
  7. 【小松教你手游开发】【unity实用技能】InvalidOperationException: ou
  8. 使用ML.Net和C#进行机器学习
  9. eureka 客户端服务启动了又失败了_SpringCloud-Eureka(2)
  10. AC自动机算法概述及习题
  11. 超强文本编辑器SciTE配置方法详细实例
  12. .net linux 界面设计,.NET Core3.0开发Liunx桌面应用程序
  13. 智能手环---MQTT协议简介及协议原理
  14. 《黑客狙击》--一部值得观看的国产高科技犯罪电影
  15. 基于MediaPipe的AI虚拟鼠标
  16. jQuery实现无刷新切换主题皮肤功能
  17. Python03(注释、算术运算符、程序执行原理、变量使用)
  18. oracle结束关闭数据,谈谈Oracle数据库的关闭
  19. Linus工作室 2021年 PB级存储方案
  20. java8 joda_Joda Time项目和java8时间api

热门文章

  1. WEB应用程序逻辑架构
  2. difftime(转)
  3. It Smells!不要让两个状态纠缠的类同时成为某个事件的观察者(一切都只是视图)...
  4. python自动化办公脚本下载-python自动化办公:文件篇(自动整理文件,一键完成)...
  5. 查看电脑python虚拟环境-Windows系统下,Python虚拟环境搭建
  6. python.freelycode.com-Python中的并行处理 -- 实例编程指南
  7. python四大软件-Python实用模块(二十)Apscheduler
  8. 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用
  9. 简明python教程购买-自学Python买什么书?
  10. python语言能干什么-python语言能做什么