套接字(socket)与socket 编程
- 字节序:
- 主机字节序(host byte order):不同的主机有不同的字节序,x86:小端;
- 网络字节序(network byte order):大端字节序;
0. 什么是套接字
- 套接字是网络进程间的通信(网络进程间通信,又叫 network IPC)接口,进程用该接口能够与其他进程通信,无论是否在同一台计算机上,
- 套接字是对通信端点的抽象,就像文件描述符(file descriptor)是对文件的抽象表示;
1. 基本概念
socket 可以看成是用户进程(Application,工作在用户空间)与内核网络协议栈(内核空间,kernel space)的编程接口(称为套接口);
- 以实现用户空间的应用对内核网络协议栈提供的服务的访问和调用;
socket 以下的 UDP/TCP、IP、Channel 等即为内核网络协议栈;
2. IPv4 套接字地址接口
$ man 7 ip
IPv4 套接字地址结构通常也称为“网际套接字地址结构”,以sockaddr_in
命名,定义在 <netinet.h>
中:
struct sockaddr_in {sa_family_t sin_family; /* address family: AF_INET */in_port_t sin_port; /* port in network byte order */struct in_addr sin_addr; /* internet address */
};/* Internet address. */
struct in_addr {uint32_t s_addr; /* address in network byte order */
};
- AF_INET:代表的是 IPv4 协议;
- 此外还有 Unix 域协议;
- Network byte order:网络字节序;
3. 通用地址结构
使不同协议间的套接字地址兼容。
struct sockaddr {uint8_t sin_len;sa_family_t sin_family;char sa_data[14];
}
- sin_len:整个 sockaddr 结构体的长度;
- sin_family:指定该地址家族;
- sa_data:由 sin_family 决定其形式;
4. 字节序转换函数
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t hostlong);
uint16_t ntohs(uint16_t hostshort);
- h:host,表示主机(主机字节序);
- n:network,表示网络(网络字节序);
- s:short,l:long
转载于:https://www.cnblogs.com/mtcnn/p/9421268.html
套接字(socket)与socket 编程相关推荐
- 网络套接字(Network socket)
网络套接字(英语:Network socket:又译网络套接字.网络接口.网络插槽)在计算机科学中是电脑网络中进程间资料流的端点.使用以网际协议(Internet Protocol)为通信基础的网络套 ...
- 基于原始套接字(raw socket)的网络抓包工具
基于raw socket的网络抓包工具 1. 原始套接字(raw socket)简介 原始套接字可以接收本机网卡上的数据帧或者数据包,利用raw socket可以编写基于IP协议的程序.一般的TCP/ ...
- Linux小知识--原始套接字(raw socket)之模拟ping
原始套接字-raw socket 最近在研究高并发下扫描存活主机,基本想法是通过socket来模拟ICMP报文,然后就发现了socket的一片新天地----原始套接字(raw socket). raw ...
- 套接字技术java_java网络编程之套接字TCP
套接字学习 什么是套接字? 计算机网络基础知识 基于套接字的网路编程案例? 什么是套接字? 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程 ...
- TCP套接字(网络)编程
简单的TCP网络编程 本文中用到的内容可在另一篇博客中见到UDP套接字编程 一. 初识TCP协议 TCP叫做传输控制协议.它具有以下特点: (1)传输层的协议 (2)面向连接:基于TCP进行网络通信时 ...
- java 套接字 访问tcp_Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
套接字Socket的引入 为了能够方便地开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统用调用socket(套接字). socket的出现,使程序员可以很方便地访 ...
- 套接字的秘密—socket与sock
那么如何把套接字和文件联系起来呢? 答案就是通过下面这张图. 其中task_struct表示一个进程,files_struct中的fd_array[]表示该进程打开的所有描述符,对于套接字来说,与其他 ...
- c语言socket鉴权,建立套接字后进行socket.io身份验证
小编典典 这实际上并不难,但是您正以错误的方式进行处理.几件事: 您不能使用socket.io 设置 cookie:但是,您可以随时获取任何已连接客户端的cookie值.为了设置cookie,您将必须 ...
- Linux小知识--原始套接字(raw socket)之自定义以太网帧发送与接收
最近这是研究原始套接字有些上头了,就是抱着学习的心态,仔细研究了一下socket的的参数 int socket(int domain, int type, int protocol); 别看就三个参数 ...
- 基于TCP/IP的套接字服务器端和客户端编程
(本文章内容来源于网络,仅供学习之用,别无二心,希望不要有纠纷,谢谢!) 基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述符.客户端随后调用conne ...
最新文章
- 测试点2和测试点4错的来:1044 火星数字 (20分)
- 51NOD 1212 无向图最小生成树
- Ionic系列——使用ng-cordova插件
- 曲线在三维空间的旋转计算以及Matlab实例实现
- 深入浅出通信原理笔记(1)
- java垃圾回收文件分析
- Git学习————Eclipse工程中Git图标
- 开关电源电路图讲解。多图!!!
- win8虚拟机_老司机教你如何在虚拟机安装win8系统,双系统也可以这样实现
- Java内存模型(JMM)学习总结
- word表格复制到excel回车换行问题 1
- 【夜读】丰富自己的4个习惯,请逼自己养成
- 思域第三方app安装方法(提权)
- 在Windows电脑上修改图片内存大小的方法
- pytest【marker标记】
- 什么是FPGA工程师的核心竞争力
- 越狱Season 1-Episode 20: Tonight
- 深度学习-兼顾工作与孩子
- python如何赚钱? python爬虫如何进阶? python就业? 如何快速入门python?
- 正负样本的分配atss