网络编程学习2-套接字编程简介
主要记录套接字的基本结构及相关常用函数
1 套接字地址结构-IPv4
1 struct in_addr{ 2 in_addr_t s_addr; // 32位的IPv4地址 3 } 4 5 struct socketaddr_in{ 6 uint_8 sin_len; // 长度 7 sa_family sin_family; //协议族,IPv4为AF_INET 8 in_port_t sin_port; // 端口号 9 struct in_addr sin_addr; //IPv4地址 10 char sin_zero[8]; 11 }
对应于IPv4套接字地址,存在一个通用的套接字地址结构,IPv6对应的通用套接字地址结构与之类似
1 struct sockadd{ 2 uint8_t sa_len; 3 sa_family sa_family; //指示协议族 4 char sa_data[14]; //特定协议地址 5 }
2 IPv6
View Code
IPv4和IPv6套接字结构具有固定的字节数,分别为16字节和28字节,而Unix、数据链路层地址结构以及sockaddr_storage则具有可变长度的套接字结构
3 字节操作函数
1 #include <string.h> 2 void bzero(void *dest, size_t nbytes); 3 void bcopy(const void *src, void *dest, size_t nbytes); 4 int bcmp(const void *src, const void *dest, size_t nbytes); 5 6 7 void *memset(void *dest, int c, size_t len); 8 void *memcpy(void *dest, const void *src, size_t nbytes); 9 int memcmp(const void *ptr1, const void *ptr2, size_t nbytes);
4 字符串与网络地址转换函数
1 #include <arpa/inet.h> 2 int inet_aton(const char *strptr, struct in_addr *addrptr); 3 in_addr_t inet_addr(const char *strptr); 4 char * inet_ntoa(struct in_addr inaddr);
5 通用的字符串与网络地址转换函数
1 #include <arpa/inet.h> 2 int inet_pton(int family, const char *strptr, void *addrptr); 3 const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
这两个函数针对IPv4和IPv6地址结构均支持
另外,为了使调用更加简洁,UNIX网络编程一书中对许多函数进行了封装,以方便调用。详细可查询unp.h头文件
1 struct in6_addr{ 2 uint8_t s6_addr[16]; //128位地址 3 } 4 5 struct sockaddr_in6{ 6 uint8_t sin6_len; 7 sa_family_t sin6_family; 8 in_port_t sin6_port; 9 10 uint32_t sin6_flowinfo; 11 struct in6_addr sin6_addr; 12 13 uint32_t sin6_scope_id; 14 }
转载于:https://www.cnblogs.com/YukiJohnson/archive/2012/10/14/2723363.html
网络编程学习2-套接字编程简介相关推荐
- 网络编程学习笔记-套接字编程-socket
本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写 前置概念详见 本文目录 概念 基本TCP套接字编程 通信循环 半链接池 链接循环 udp协议 基于TCP协议实现远程执行客户端请 ...
- 【Linux网络编程】UDP 套接字编程
[Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...
- python 图形化socket编程_Python黑帽编程2.8 套接字编程
Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...
- Python黑帽编程2.8 套接字编程
Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...
- [Linux网络编程学习笔记]套接字地址结构
好久没有看那Linux网络编程这本书了,今天看到了重点部分-TCP套接字.下面先来看看套接字的地址结构 Linux系统的套接字可以支持多种协议,每种不同的协议都是用不同的地址结构.在头文件<li ...
- 【Linux网络编程】原始套接字编程
原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据.区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有 ...
- 网络编程---TCP/UDP套接字编程原理
本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...
- java 函数式编程 示例_Java套接字编程–套接字服务器,客户端示例
java 函数式编程 示例 Welcome to Java Socket programming example. Every server is a program that runs on a s ...
- python编程示例_Python套接字编程–服务器,客户端示例
python编程示例 Good Day Learners! In our previous tutorial, we discussed about Python unittest module. T ...
- UNIX网络编程——基本TCP套接字编程 【转贴】
一.基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的 ...
最新文章
- LeetCode简单题之最长回文串
- 百度要造什么车?汽车依然逃不出 BAT 的手掌心 | 撩车
- java中什么时候不能用泛型_java中泛型的正确使用姿势
- 2021年人工神经网络第四次作业要求:第七题
- 吸烟致癌的迷思是如何破除的?
- 用c语言中的函数来求公约数,C语言中求最大公约数的函数
- [51nod1106]质数检测
- 笔记本电脑运行卡顿的真正原因和解决方案
- B2B、B2C、C2C、O2O分别是什么意思?
- echarts 力导向关系图
- 引用参数如何设缺省值(默认值)(C++)
- Markdown设置图片大小
- ios获取麦克风音频输入数据(PCM)计算DBSPL后与真实值差距很大
- 软考高级系统架构师是什么来头?考上了就能当架构师了吗
- VSCode(Visual Studio Code) 在Python中,自动提示函数选中后带括号设置
- 8B10B编解码的Verilog实现
- IK分词器下载、使用和测试
- UPS不间断电源调试注意事项
- 扇贝的python课程好吗_【扇贝Python面试】很简单的题目-看准网
- [工具类] Flash builder 4.6 下载 破解 序列号
热门文章
- 动力环境监控系统论文_浅析建设智能化动力环境监控系统维护水平论文
- html怎么定位到不同的页面,html页面定位到指定位置的4种实现方式
- Vue报错Cannot find module ‘webpack-cli/bin/config-yargs‘
- webstorm与Idea禁用自动保存
- 最便宜的那款特斯拉,刚刚喜提“最安全汽车”称号(然后被打脸)
- 从 1 到完美,用 node 写一个命令行工具
- 45.国际化-选择使用资源文件
- 无刷新三级联动(ajax)(转)
- HTML vs XHTML vs DHTML
- js table的所有td 按行合并