嵌入式开发-套接口编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
套接口编程 第二十三章 回顾 Socket简介 Windows Socket Socket常用函数介绍 TCP/IP网络程序框架与实例 目标 Socket简介 Windows Socket Socket常用函数介绍 TCP/IP网络程序框架与实例 什么是Socket 独立于具体协议的网络编程接口 在ISO模型中,主要位于会话层和传输层之间 BSD Socket(伯克利套接字)是通过标准的UNIX文件描述符和其它程序通讯的一个方法,目前已经被广泛移植到各个平台。 不同操作系统中的Socket Windows Socket (Winsock) Linux Socket (BSD Socket) 为什么需要Socket 普通的I/O操作过程 打开文件->读/写操作->关闭文件 TCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”操作 进行网络操作的两个进程在不同的机器上,如何连接? 网络协议具有多样性,如何进行统一的操作 需要一种通用的网络编程接口:Socket Socket类型 流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 原始套接字(SOCK_RAW) 可以对较低层次协议,如IP、ICMP直接访问。 Socket的位置 Windows Socket 简称Winsock,是在Windows环境下使用的一套网络编程规范,基于4.3BSD的BSD Socket API制定 1991年Winsock 1.1,16位,由WINSOCK.DLL支持,主要用在Windows 95中 1997年Winsock 2.2 版,32位,由WSOCK32.DLL支持,主要用在Windows 98及以后的版本中 已经成为Windows环境下网络编程的事实标准 三类函数 与BSD Socket相兼容的基本函数 与BSD Socket相兼容的网络信息检索函数 Windows专用扩展函数 Winsock 2-1 Winsock是一个基于Socket模型的API,在Windows系统中广泛使用 它在Berkeley接口函数的基础上,还增加了基于消息驱动机制的Windows扩展函数 Winsock1.1只支持TCP/IP网络,Winsock2.2增加了对更多协议的支持 Winsock 2-2 需要包含头文件Winsock2.h,需要使用库ws2_32.lib,包含办法可以用语句来告诉编译时调用该库   #pragma comment(lib,”ws2_32.lib”); 如果使用Visual C++ 6.0,可以通过“工程” “设置”“工程设置”“链接”“对象/库模块”中加入“ws2_32.lib” 基本函数2-1 网络连接函数 socket 创建套接字 bind 绑定本机端口 connect 建立连接 listen 监听端口 accept 接受连接 recv, recvfrom 数据接收 send, sendto 数据发送 close, shutdown 关闭套接字 基本函数2-2 转换函数 IP地址转换函数 inet_addr() 点分十进制数表示的IP地址转换为网络字节序的IP地址 inet_ntoa() 网络字节序的IP地址转换为点分十进制数表示的IP地址 字节排序函数 htonl 4字节主机字节序转换为网络字节序 ntohl  4字节网络字节序转换为主机字节序 htons 2字节主机字节序转换为网络字节序 ntohs 2字节网络字节序转换为主机字节序 面向连接的C/S程序工作流程图 Windows Socket的启动 使用Winsock API编制的网络应用程序中,在调用任何一个Winsock函数之前都必须检查协议栈安装情况。 函数原型: int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 函数参数: wVersionRequested是一个WORD型(双字节型)数值,指定使用的版本号,对Winsock2.2而言,此参数的值为0x0202,也可以用宏MAKEWORD(2,2)来获得 lpWSAData是一个指向WSADATA结构的指针,它返回关于Winsock实现的详细信息 函数返回值: Winsock启动示例 #include Winsock2.h WORD wVersionRequested; WSADATA wsaData; wVersionReq

文档评论(0)

kolr + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档