socket编程学习资料2

socket编程学习资料2

ID:41032828

大小:113.00 KB

页数:5页

时间:2019-08-14

socket编程学习资料2_第1页
socket编程学习资料2_第2页
socket编程学习资料2_第3页
socket编程学习资料2_第4页
socket编程学习资料2_第5页
资源描述:

《socket编程学习资料2》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第二节无连接客户机/服务器应用程序2.1数据结构及常用Socket调用函数2.1.1常用的数据结构1、通用的地址结构#includestructsockaddr{u_shortsa_family;/*地址类型:AF_XXX*/charsa_data[14];/*upto14bytesofaddress*/}sa_data包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一起的。2、互联网域的专用地址结构#includestructsoc

2、kaddr_in{shortsin_family;/*AF_INET*/u_shortsin_port;/*16位端口号*/structin_addrsin_addr;/*32位IP地址*/charsin_zero[8];/*unused*/}其中structin_addr{u_longs_addr;}注意:lsin_zero是为了使两个结构在内存中具有相同的尺寸,使用时将其全部设为0值。(用bzero()或memset()函数)l两个指针是可以互通使用;l保证sin_port和sin_addr必须是网络字

3、节顺序3、主机地址结构structhostent{char*h_name;/*主机的正式名称*/char**h_aliases;/*存储了主机的备用名称*/charh_addrtype;/*返回地址类型,一般是AF_INET*/inth_length;/*地址的字节长度*/char**h_addr_list;/*存储了主机的网络地址*/}#defineh_addrh_addr_list[0]2.1.2基本转换函数1、网络字节顺序与主机字节顺序机器内部对变量字节存储顺序不同(高低位顺序不同,在Inte286/

4、386和DEC公司的VAX系统中的字节高位在后,而SPARC和IBMSystem/370则是高位在先),而网络传输的数据一定是要统一顺序的,所以对内部字节表示顺序和网络字节顺序不同的机器,一定要对数据进行转换。2、转换函数htons()htonl()ntohs()ntotl()sin_addr和sin_port从IP层和传输层获取,与网络有关,所以必须使用网络字节顺序。而sin_family只是用来判断类型,不会传输到网络上,所以可以使用主机字节顺序来存储。3、IP地址转换inet_addr(“166.11

5、1.66.47”)inet_ntoa(“ina.sin_addr”)2.1.3基本查询函数getpeername()getsockname()gethostname()gethostbyaddr()getprotobyname()2.2无连接客户机/服务器应用程序的基本模式2.3无连接客户机/服务器源程序中的基本socket调用1、socket()建立一个通信链路的端点intsocket(intdomain,inttype,intprotocol)表2-1参数family给出了socket所处的通信域fam

6、ily值通信域支持协议AF_UNIXUNIX域UNIX通信协议AF_INET互联网域TCP/IPAF_NSXerox域XNS表2-2参数type给出socket类型type值类型描述SOCK_STREAM流式面向连接的通信,可进行可靠、顺序的数据传送SOCK_DGRAM数据报式无连接通信,数据传送是不可靠,无序的参数protocol指出了socket使用的协议。对UNIX域该参数大多数情况下皆为0;而对于其他的通信域,该参数值与type值相对应。SOCK_DGRAM对应IPPROTO_UDP;SOCK_ST

7、REAM对应IPPROTO_TCP。2、bind()指定套接字使用的端口,将套接字与地址结构描述相连。intbind(intsockfd,structsockaddr*my_addr,intaddrlen)注意要将地址和端口使用网络字节顺序。端口为0时,会选定一个合适的端口。3、read()与write()后者通常用于无连接通信中发送和接收数据。count=read(sockfd,msg,length);count=write(sockfd,msg,length);4、sendto()与recvfrom()

8、count=sendto(sockfd,msg,length,toaddr,addrlen);count=recvfrom(sockfd,buf,length,fromaddr,&addrlen);intcount,sockfd;har*msg,*buf;structsockaddr*toaddr,*fromaddr;intlength,addrlen;表2-3关闭socket的方式关闭方式作用0指示不允许接收数

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

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

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