主要记录套接字的基本结构及相关常用函数

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对应的通用套接字地址结构与之类似

View Code

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 字节操作函数

View Code

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 字符串与网络地址转换函数

View Code

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 通用的字符串与网络地址转换函数

View Code

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-套接字编程简介相关推荐

  1. 网络编程学习笔记-套接字编程-socket

    本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写 前置概念详见 本文目录 概念 基本TCP套接字编程 通信循环 半链接池 链接循环 udp协议 基于TCP协议实现远程执行客户端请 ...

  2. 【Linux网络编程】UDP 套接字编程

    [Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...

  3. python 图形化socket编程_Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

  4. Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

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

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

  6. 【Linux网络编程】原始套接字编程

    原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据.区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有 ...

  7. 网络编程---TCP/UDP套接字编程原理

    本篇介绍的是Linux下的网络编程,故有些接口是不适用于Windows的,但是具体概念和实现方法是大体一致的 本篇重在讲解原理,具体实现请戳这里->UDP套接字编程实现 介绍 网络编程套接字(s ...

  8. java 函数式编程 示例_Java套接字编程–套接字服务器,客户端示例

    java 函数式编程 示例 Welcome to Java Socket programming example. Every server is a program that runs on a s ...

  9. python编程示例_Python套接字编程–服务器,客户端示例

    python编程示例 Good Day Learners! In our previous tutorial, we discussed about Python unittest module. T ...

  10. UNIX网络编程——基本TCP套接字编程 【转贴】

    一.基于TCP协议的网络程序 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听端口的 ...

最新文章

  1. LeetCode简单题之最长回文串
  2. 百度要造什么车?汽车依然逃不出 BAT 的手掌心 | 撩车
  3. java中什么时候不能用泛型_java中泛型的正确使用姿势
  4. 2021年人工神经网络第四次作业要求:第七题
  5. 吸烟致癌的迷思是如何破除的?
  6. 用c语言中的函数来求公约数,C语言中求最大公约数的函数
  7. [51nod1106]质数检测
  8. 笔记本电脑运行卡顿的真正原因和解决方案
  9. B2B、B2C、C2C、O2O分别是什么意思?
  10. echarts 力导向关系图
  11. 引用参数如何设缺省值(默认值)(C++)
  12. Markdown设置图片大小
  13. ios获取麦克风音频输入数据(PCM)计算DBSPL后与真实值差距很大
  14. 软考高级系统架构师是什么来头?考上了就能当架构师了吗
  15. VSCode(Visual Studio Code) 在Python中,自动提示函数选中后带括号设置
  16. 8B10B编解码的Verilog实现
  17. IK分词器下载、使用和测试
  18. UPS不间断电源调试注意事项
  19. 扇贝的python课程好吗_【扇贝Python面试】很简单的题目-看准网
  20. [工具类] Flash builder 4.6 下载 破解 序列号

热门文章

  1. 动力环境监控系统论文_浅析建设智能化动力环境监控系统维护水平论文
  2. html怎么定位到不同的页面,html页面定位到指定位置的4种实现方式
  3. Vue报错Cannot find module ‘webpack-cli/bin/config-yargs‘
  4. webstorm与Idea禁用自动保存
  5. 最便宜的那款特斯拉,刚刚喜提“最安全汽车”称号(然后被打脸)
  6. 从 1 到完美,用 node 写一个命令行工具
  7. 45.国际化-选择使用资源文件
  8. 无刷新三级联动(ajax)(转)
  9. HTML vs XHTML vs DHTML
  10. js table的所有td 按行合并