晋城网站建设价格,科技助手和平精英,制定一份网站界面设计方案,百度热搜 百度指数socket 及 字节序转换 socket简介Socket为什么需要Socket#xff1f;socket类型Socket通信模型 字节序主机字节序到网络字节序网络字节序到主机字节序IP地址转换 socket简介
1、1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 2、1… socket 及 字节序转换 socket简介Socket为什么需要Socketsocket类型Socket通信模型 字节序主机字节序到网络字节序网络字节序到主机字节序IP地址转换 socket简介
1、1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 2、1986 - Berkeley 扩展了socket 接口使之支持UNIX 下的TCP/IP 通信 3、现在很多应用 (FTP, Telnet) 都依赖这一接口
Socket
1、是一个编程接口 2、是一种特殊的文件描述符 (everything in Unix is a file) 3、并不仅限于TCP/IP协议 4、面向连接 (Transmission Control Protocol - TCP/IP) 5、无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)
为什么需要Socket
普通的I/O操作过程 1、打开文件读/写操作关闭文件 2、TCP/IP协议被集成到操作系统的内核中引入了新型的“I/O”操作 3、进行网络通信的两个进程在不同的机器上如何连接 4、网络协议具有多样性如何进行统一的操作 需要一种通用的网络编程接口Socket
socket类型
流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务数据无差错、无重复的发送且按发送顺序接收。内设置流量控制避免数据流淹没慢的接收方。数据被看作是字节流无长度限制。 数据报套接字(SOCK_DGRAM) UDP 提供无连接服务。数据包以独立数据包的形式被发送不提供无差错保证数据可能丢失或重复顺序发送可能乱序接收。 原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。
Socket通信模型 端口号 1、为了区分一台主机接收到的数据包应该转交给哪使用端口号来区分 2、TCP端口号与UDP端口号独立 3、端口号一般由IANA (Internet Assigned Numbers Authority) 管理 4、端口用两个字节来表示 2byte 众所周知端口1-10231-255之间为众所周知端口256~1023端口通常由UNIX系统占用 已登记端口1024~49151 动态或私有端口49152~65535
字节序
小端序little-endian - 低序字节存储在低地址 (主机字节序) 大端序big-endian- 高序字节存储在低地址 (网络字节序)
网络中传输的数据必须使用网络字节序即大端字节序
笔试题写一个函数判断当前主机的字节序
方式共用体、指针强转、数据类型强转
主机字节序到网络字节序
u_long htonl (u_long hostlong);
u_short htons (u_short short); //掌握这个 网络字节序到主机字节序
u_long ntohl (u_long hostlong);
u_short ntohs (u_short short);IP地址转换
typedef uint32_t in_addr_t;
struct in_addr {in_addr_t s_addr;
};
in_addr_t inet_addr(const char *cp); //从人看的ip地址转为机器使用的32位无符号整数
char *inet_ntoa(struct in_addr in); //从机器到人