Windows Socket编程实验要求.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows Socket编程实验要求

Windows Socket编程 实验要求 Windows Sockets编程简介 Windows Sockets简介 基本概念 数据结构 WinSock 库函数 程序结构 Windows Sockets简介 Windows Sockets(套接字) 是在Windows下一套开放的、支持多种协议的网络编程接口规范。为 Windows下网络异步通信提供了一种方便的开发和运行环境。 Windows Sockets规范建立在 BSD UNIX 中实现的 Berkeley 套接字模型上,这个模型现在已是TCP/IP网络的标准。它独立于底层的协议。 许多网络供应商在网络协议中支持 Windows Sockets,包括TCP/IP、 DECNet、IPX/SPX 等。目前主要是TCP/IP Windows Sockets DLL。 原理示意图 工作模式 TCP/IP应用服务采用客户机/服务器工作模式,服务器端启动守护进程,等待客户端的请求;服务器对应客户端的请求,派生子进程与客户进程进行数据通信,提供服务。 客户机/服务器工作模式 服务器先启动: 1)打开一通道,告之本地主机愿意在某一公认的地址(端口,如FTP为21)接收客户请求。 2)等待客户请求到达该端口。 3)接收客户请求,处理请求。 4)转2),等待另一客户请求。 客户方: 1)打开一通道,并连接到服务器的端口上。 2)向服务器发服务请求报文,等待应答;继续请求…… 3)请求结束,关闭通道。 基本概念 套接字(Socket):网络通信的基本构件,它是可以被命名和寻址的通信端点,每一个套接字与一个进程相连。 TCP/IP应用程序之间的通信通过Socket进行。 服务器拥有全局公认的Socket,任何客户端都可以向它发出连接请求和信息请求。 客户端向操作系统申请一个Socket,系统为之分配一个Socket号。 套接字类型 流式套接字 SOCK_STREAM 面向连接,可靠,数据无错,无重复的发送,且按发送顺序接收的服务。 数据报式套接字 SOCK_DGRAM 无连接服务。数据包以独立方式发送,数据可能有错、有重复、有丢失,接收顺序混乱。 端口 传输层和网络层在功能上的最大区别是传输层提供了进程通信能力。网络通信的最终地址不仅仅是主机地址,还包括可以描述进程的某种标识符; 端口是一种抽象的软件结构(包括一些数据结构和 I/O 缓冲区)。 每个端口都有一个端口号,TCP/IP的 TCP 和 UDP 的端口号互相独立。小于255 的端口号作为保留端口。 相关五元组 半相关(三元组) (协议、本地地址、本地端口号) 它在网络中可以全局唯一地标志一个进程,它指定了连接的每半部分。 全相关(相关五元组) (协议、本地地址、本地端口号、远程地址、远程端口号) 阻塞(blocking) 两种模式: 阻塞模式(blocking mode) 非阻塞模式(non-blocking mode)。 阻塞模式(或称同步模式 Synchronous)的socket的函数直到操作完成才返回。调用返回之前,该 socket 不能做任何其它事情。在Berkeley Sockets 中,套接字的默认工作模式是阻塞模式 非阻塞模式(异步操作 operating asynchronously),则调用立即返回。 Windows Sockets 鼓励使用非阻塞的异步操作,用消息来驱动可能引起阻塞的网络连接和数据传输函数。 基本数据结构 Winsock.h 定义了Winsock.dll 使用的数据结构和函数 SOCKET 句柄数据类型(套接字描述符/套接字号) typedef unsigned int u_int; typedef u_int SOCKET; 网络地址结构:WinSock 使用 SOCKADDR_IN 结构来指定本地或与之建立socket 连接的远程端点地址。 struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } s_un_b; struct { u_short s_w1,s_w2; } s_un_w; u_long s_addr; }; typedef struct sockaddr_in SOCKADDR_IN; /* Socket address, in

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档