当前位置: 首页 > news >正文

网络编程先验知识2

常见的网络接口:

  • berkeley UNIX操作系统定义了一种API,称为BSD Socket API;
  • 微软的Windows NT操作系统定义了WinSock API;
  • AT&T的UNIX操作系统定义了SysV Socket API;

三元组:

IP地址+端口号+协议
1.IP地址:标识网络设备
2.端口号:标识进程
3.协议:指定数据传输方式

套接字:

地址族结构体:

  • SA_family:地址族:IPv4、IPv6、Unix域、网络域

    • AF_UNIX:Unix域地址族,使用本地域套接字地址结构,用于本地通信;
    • AF_INET:IPv4地址族;
    • AF_INET6:IPv6地址族;
  • 通用地址结构体:

struct sockaddr{sa_family_t sa_family;char sa_data[14];
};
  • IPv4地址结构体:
struct sockaddr_in{sa_family_t sin_family;uint16_t sin_port;struct in_addr sin_addr;
};
struct in_addr{uint32_t s_addr;
};
  • IPv6地址结构体:
struct sockaddr_in6{sa_family_t sin6_family;uint16_t sin6_port;uint32_t sin6_flowinfo;struct in6_addr sin6_addr;uint32_t sin6_scope_id;
};
struct in6_addr{uint8_t s6_addr[16];
};

套接字类型:

  • SOCK_STREAM:流套接字,TCP协议;

  • SOCK_DGRAM:数据报套接字,UDP协议;

  • SOCK_RAW:原始套接字,用户协议;
    展示

    • 套接字属于一种特殊的文件描述符
    • UNIX域套接字用于本地进程间通信

实现过程:
1.创建套接字:
int socket(int domain,int type,int protocol);
2.绑定套接字:
int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);
3.监听套接字:
int listen(int sockfd,int backlog);
4.接受连接:
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
5.发送数据:
ssize_t send(int sockfd,const void *buf,size_t len,int flags);
6.接收数据:
ssize_t recv(int sockfd,void *buf,size_t len,int flags);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 全球化系统设计:多时区处理
  • 代理ip池的ip是重复利用的吗?
  • 安卓App开发 篇二:Android UI和布局
  • SpringBoot使用Template请求http接口
  • 【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task1:智能编程助手(持续更新)
  • 【前端】NodeJS:包管理工具
  • vue2 使用axios 请求后台返回文件流导出为excel
  • PHP Objiect Injection
  • 大数据_SQL_5min访问达到100次的用户
  • DataLoader 的基本用法
  • go post请求,参数是raw json格式,response是固定结构。
  • 编程-设计模式 10:外观模式
  • 获取客户端真实IP
  • 以树莓集团的视角:探索AI技术如何重塑数字媒体产业发展
  • LSPosed模块开发第一篇
  • 分享一款快速APP功能测试工具
  • ➹使用webpack配置多页面应用(MPA)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CentOS 7 防火墙操作
  • Elasticsearch 参考指南(升级前重新索引)
  • HTTP--网络协议分层,http历史(二)
  • Objective-C 中关联引用的概念
  • windows下如何用phpstorm同步测试服务器
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 好的网址,关于.net 4.0 ,vs 2010
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深度学习在携程攻略社区的应用
  • - 转 Ext2.0 form使用实例
  • ​flutter 代码混淆
  • ​补​充​经​纬​恒​润​一​面​
  • #14vue3生成表单并跳转到外部地址的方式
  • #NOIP 2014# day.2 T2 寻找道路
  • #职场发展#其他
  • (2)(2.10) LTM telemetry
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (分布式缓存)Redis持久化
  • (蓝桥杯每日一题)love
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (六)激光线扫描-三维重建
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)终结任务
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一)基于IDEA的JAVA基础10
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)http协议
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 分布式技术比较
  • .Net面试题4
  • .NET值类型变量“活”在哪?
  • .NET中分布式服务
  • /usr/bin/env: node: No such file or directory
  • @Autowired @Resource @Qualifier的区别
  • @component注解的分类
  • @EnableWebSecurity 注解的用途及适用场景