套接字(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
套接字(socket)与socket 编程的更多相关文章
- raw_socket(原始套接字)以及普通socket使用终极总结
一.传输层socket(四层socket,普通socket) 可参考本人以下博客: Windows Socket编程之UDP实现大文件的传输:http://blog.csdn.net/luchen ...
- 伯克利套接字(BSD Socket)
http://blog.csdn.net/blueman2012/article/details/6693605#socket.28.29 伯克利套接字(Berkeley sockets),也称为BS ...
- 基础套接字的C#网络编程
1.基于socket创建套接字网络连接服务端1.初始化 步骤 操作 方法 操作类 1. 创建ip ipaddress IPAddress类 2. 创建ip终结点 ipendpoint IpendP ...
- IDEA Spark Streaming 操作(套接字流)-----make socket数据源
import java.io.PrintWriter import java.net.ServerSocket import scala.io.Source object DStream_makeSo ...
- Python套接字编程(1)——socket模块与套接字编程
在Python网络编程系列,我们主要学习以下内容: 1. socket模块与基本套接字编程 2. socket模块的其他网络编程功能 3. SocketServer模块与简单并发服务器 4. 异步编程 ...
- 套接字编程,创建套接字socket
1.套接字地址结构: struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; 其中,成员sa_family表示套接字的协议族类型,对 ...
- 19 网络编程--Socket 套接字方法
1.Socket(也称套接字)介绍 socket这个东东干的事情,就是帮你把tcp/ip协议层的各种数据封装啦.数据发送.接收等通过代码已经给你封装好了 ,你只需要调用几行代码,就可以给别的机器发消息 ...
- Python Socket套接字编程
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- 网络编程之套接字socket
目录 socket套接字 引子 为何学习socket一定要先学习互联网协议 socket是什么 套接字类型 基于文件类型的套接字家族 基于网络类型的套接字家族 套接字工作流程 基于TCP的套接字 简单 ...
- socket套接字编程 HTTP协议
socket套接字编程 套接字介绍 1. 套接字 : 实现网络编程进行数据传输的一种技术手段 2. Python实现套接字编程:import socket 3. 套接字分类 >流式套接 ...
随机推荐
- EF code first Acceleration - CodeFirst 加速
EntityFramework Code First 用起来很方便,可是有时感觉卡,就是有点慢.可以采用以下措施来加速一下,原来取出1万条记录并显示在Winform窗体上第一次需要1.9秒的时间,加速 ...
- oracle 用户的操作
语法: CREATE USER user IDENTIFIED { BY password | EXTERNALLY [ AS 'certificate_DN' ] ...
- Oracle Sequence不设置cache参数的几个潜在问题(转载)
转载于 http://www.uml.org.cn/sjjm/201204065.asp 在Oracle中,我们没有MYSQL和SQL Server ...
- (转)淘淘商城系列——初始SolrCloud
http://blog.csdn.net/yerenyuan_pku/article/details/72944611 本文我只是简单介绍一下SolrCloud,如果大家要是感兴趣的话,可以参考Sol ...
- HDU_1532_最大流
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 取textaera里的值
jQuery的.val()方法是专门用来获取表单元素值的,而textarea也属于表单元素所以可以直接用.val()方法获取. 不过要注意,由于textarea是个双标记因此.text()或.html ...
- JAVA通用工具类
1.异常验证框架 框架1:com.google.common.base.Preconditions 框架2:org.apache.commons.lang.Validate 框架3:org.apach ...
- 【转载】使用IntelliJ IDEA创建Maven聚合工程、创建resources文件夹、ssm框架整合、项目运行一体化
一.创建一个空的项目作为存放整个项目的路径 1.选择 File——>new——>Project ——>Empty Project 2.WorkspaceforTest为项目存放文件夹 ...
- uva 1401
Neal is very curious about combinatorial problems, and now here comes a problem about words. Knowing ...
- 【原创】基于NodeJS Express框架开发的一个VIP视频网站项目及源码分享
项目名称:视频网站项目 开发语言:HTML,CSS(前端),JavaScript,NODEJS(expres)(后台) 数据库:MySQL 开发环境:Win7,Webstorm 上线部署环境:Linu ...