socket 编程 参考

socket 编程 参考

ID:34484152

大小:220.00 KB

页数:29页

时间:2019-03-06

socket 编程 参考_第1页
socket 编程 参考_第2页
socket 编程 参考_第3页
socket 编程 参考_第4页
socket 编程 参考_第5页
资源描述:

《socket 编程 参考》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Socket编程参考UNP第一卷chinaunix论坛一、基本知识主机字节序和网络字节序主机字节序即内存中存储字节的方法有:1.Littleendian:将低序字节存储在起始地址2.Bigendian:将高序字节存储在起始地址网络字序表示网络协议在处理多字节时的顺序,一律为bigendian主机字节序和网络字节序转换的函数:#includeuint16_thtons(uint16_t<16位的主机字节序>)uint32_thtonsl(uint32_t<32位的主机字节序>)//转换为网络字节序uint16_tnt

2、ohs(uint16_t<16位的网络字节序>)uint32_tntohl(uint32_t<32位的网络字节序>)//转换为主机字节序缓冲区每个TCPSOCKET有一个发送缓冲区和一个接收缓冲区,TCP具有流量控制,所以接收缓冲区的大小就是通知另一端的窗口的大小,对方不会发大于该窗口大小的数据;而UDPSOCKET只有一个接收缓冲区无流量控制,当接收的数据报溢出时就会被丢弃通信域(地址族)套接字存在于特定的通信域(即地址族)中,只有隶属于同一地址族的套接字才能建立对话。Linux支持AF_INET(IPv4协议)、AF_INET6(IPv6

3、协议)和AF_LOCAL(Unix域协议)。套接口(socket)=网络地址+端口号。,要建立一个套接口必须调用socket函数,套接口有三种类型,即字节流套接口(SOCK_STREAM),数据报套接口(SOCK_DGRAM)和原始套接口(SOCK_RAW)。定义一个连接的一个端点的两元组,即IP地址和端口号,称为一个套接口。在网络连接中,两个端点所组成的四元组(即本地IP、本地PORT、远程IP和远程PORT)称为socketpair,该四元组唯一的标识了一个网络连接。该情况可通过netstat验证。二、socket地址结构1.IPv4的S

4、ocket地址结构(定长)Structin_addr{In_addr_ts_addr;//32位IP地址,网络字节序}Structsockaddr_in{Uint8_tsin_len;//IPv4为固定的16字节长度Sa_family_tsin_family;//地址簇类型,为AF_INETIn_port_tsin_port;//16位端口号,网络字节序Structin_addrsin_addr;//32位IP地址Charsin_zero[8];//未用}2.IPv6的socket地址结构(定长)structin6_addr{uint8_ts

5、6_addr[16];//128位IP地址,网络字节序}structsockaddr_in6{uint8_tsin6_len;//IPv6为固定的24字节长度sa_family_tsin6_family;//地址簇类型,为AF_INET6in_port_tsin6_port;//16位端口号,网络字节序uint32_tsin6_flowinfo;//32位流标签structin6_addrsin6_addr;//128位IP地址}3.UNIX域socket地址结构(变长)Structsockaddr_un,地址簇类型为AF_LOCAL4.数据

6、链路socket地址结构(变长)structsockaddr_dl,地址簇类型为AF_LINK5.通用的socket地址结构structsockaddr{uint8_tsa_len;sa_family_tsa_family;charsa_data[14];}三、C/S网络编程初始化sock连接符:intsocket(intdomain,inttype,intprotocol);函数返回socket描述符,返回-1表示出错domain参数只能取AF_INET,protocol参数一般取0应用示例:TCP方式:sockfd=socket(AF_I

7、NET,SOCK_STREAM,0);UDP方式:sockfd=socket(AF_INET,SOCK_DGRAM,0);绑定端口:intbind(intsockfd,structsockaddr*sa,intaddrlen);函数返回-1表示出错,最常见的错误是该端口已经被其他程序绑定。需要注意的一点:在Linux系统中,1024以下的端口只有拥有root权限的程序才能绑定。连接网络(用于TCP方式):intconnect(intsockfd,structsockaddr*servaddr,intaddrlen);函数返回-1表示出错,可能

8、是连接超时或无法访问。返回0表示连接成功,可以通过sockfd传输数据了。监听端口(用于TCP方式):intlisten(intsockfd,intqueue_le

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。