socket编程

别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述socket编程相关的知识,希望能为你提供帮助。
一、网络套接字
1.什么是socket:网络通信的函数接口,在里面封装了传输层协议(tcp,udp)。
2.在通信过程中,套接字一定是成对出现的。一个文件描述符指向一个套接字,套接字内部借助两个缓冲区实现,一端的发送缓冲区对应另一端的接受缓冲区。

二、网络字节序
1.小端法:高位存高地址,低位存低地址
2.大端法:高位存低地址,低位存高地址
如何判断是大端存储还是小端存储请看前期博客
3.TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。所以为了网络程序的可移植性,使得代码在大端和小端计算机上编译后都能够正常运行,通常要调用相关的库函数完成网络字节序和主机字节序的转换。如果主机是小端字节序,这些函数将参数做出相应的大小端转换然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。

#include < arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htona(uint16_t hostshort);
uint32_t ntohl(unit32_t netlong);
uint16_t ntoha(unit16_t netshort);

h表示host,n表示network,l表示32位长整数,s表示16位短整数
htonl 是将本地转网络(ip)
htons是将本地转网络(port)
ntoh1是将网络转本地(ip)
【socket编程】ntohs是将网络转本地(port)

    推荐阅读