- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本套接口编程解读
基本套接字编程 主要内容 套接字基础 套接字地址结构 套接字基本函数 简单TCP套接字编程 简单UDP套接字编程 套接字基础 网络编程接口有两个发展方向:Socket,TLI 套接字是一种网络API,程序员可以用之开发网络程序。套接字接口本意在于提供一种进程间通信的方法,使得在相同或不同的主机上的进程能以相同的规范进行双向信息传送。 套接字类型 套接字支持多种通信协议: Unix:Unix系统内部协议 INET:IP版本4 INET6:IP版本6 Linux支持多种套接字类型,即应用程序希望的通信服务类型 SOCKET_STREAM:双向可靠数据流,对应TCP SOCKET_DGRAM:双向不可靠数据报,对应UDP SOCKET_RAW:原始套接字。允许对低于传输层的协议或物理网络直接访问。例如接收和发送ICMP报文。 套接字地址结构(IPv4) 大多数套接字函数需要一个指向套接字地址结构的参数,每个协议族都定义它自己的套接字地址结构,一般以”sockaddr_”开头,并以协议族为后缀。(netinet/in.h) struct sockaddr_in server …… bzero(server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(PORT); server.sin_addr.s_addr = htonl(INADDR_ANY) ……. 套接字地址结构(IPv6) IPv6地址为128位。(netinet/in.h) IPv4与IPv6地址结构比较 套接口地址结构仅在给定主机上使用,虽然有些成员用在不同主机间通信,但结构本身并不参与通信。 通用套接字地址结构 由于套接字函数需接收来自不同协议的地址结构,常用的办法是使用通用的指针类型,即(void *).但套接字函数方法是定义一个通用的套接字地址结构。sys/socket.h 字节排序函数 为保证”大端“和”小端“字节序的机器之间能相互通信,需在发送多字节整数时,将主机字节序转换成网络字节序,或反之。 字节排序函数(cont.) #include netinet/in.h uint16_t htons(uint16_t hostshort) uint32_t htonl(uint32_t hostlong) 均返回:网络字节序值 uint16_t ntohs(uint16_t netshort) uint32_t ntohl(uint32_t netlong) 均返回:主机字节序值 h:主机 n:网络 s:短整数 l:长整数 字节操纵函数 #include string.h void bzero(void *dest, size_t nbytes); void bcopy(const void *src, void *dest, size_t nbytes); int bcmp(const void *src, void *dest, size_t nbytes); /*返回0则相同,非0不相同*/ 上述三个函数源自BSD void *memset(void *dest, int c, size_t len); void *memcpy(void *dest, const void *src, size_t nbytes); int memcmp(const void *ptr1, const void *ptr2, size_t nbytes) 上述三个函数属于ANSI C #include syslib.h #include string.h main() { char *s1=Hello, Programmers!; char *s2=Hello, programmers!; int r; r=memcmp(s1,s2,strlen(s1)); if(!r) printf(s1 and s2 are identical); else if(r0) printf(s1 less than s2); else printf(s1 greater than s2); } memset函数 #include memory.h #include stdio.h int main() { char buffer[] = Thi
您可能关注的文档
最近下载
- 二级综合医院评审标准实施细则(任务分解确定责任科室稿).pdf VIP
- 2021年高考真题-英语(新高考全国Ⅰ卷)-含解析.pdf VIP
- 《文化的传承与创新》课件.ppt VIP
- 感觉信息处理及自我调节能力检核表[汇编] .pdf VIP
- 实用应用文写作(中职版):日常生活类应用文写作PPT教学课件.pptx VIP
- 口腔检查记录表.docx VIP
- 化工仪表管理制度汇编.docx VIP
- JB∕T 9050.1-2015 圆柱齿轮减速器 第1部分:通用技术条件.pdf VIP
- 拔除智齿病历.docx VIP
- (正式版)JB∕T 9050.2-2024 圆柱齿轮减速器 第2部分:接触斑点测定方法.pdf VIP
文档评论(0)