windows_socket_网络编程详解_第1页
windows_socket_网络编程详解_第2页
windows_socket_网络编程详解_第3页
windows_socket_网络编程详解_第4页
windows_socket_网络编程详解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows Socket 网络编程 一、TCP/IP 体系结构与特点 1、TCP/IP 体系结构 TCP/IP 协议实际上就是在物理网上的一组完整的网络协议。其中 TCP 是提供传 输层服务,而 IP 则是提供网络层服务。TCP/IP 包括以下协议:(结构如图 1.1) (图 1.1) IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存 储。同时为 ICMP,TCP,UDP 提供分组发送服务。用户进程通常不需要涉及这一 层。 ARP: 地址解析协议(Address Resolution Protocol) 此协议将网络地址映射到硬件地址。 RARP: 反向地址解析协议(Reverse Address Resolution Protocol) 此协议将硬件地址映射到网络地址 ICMP: 网间报文控制协议(Internet Control Message Protocol) 此协议处理信关和主机的差错和传送控制。 TCP: 传送控制协议(Transmission Control Protocol) 这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户 进程提供虚电路服务,并为数据可靠传输建立检查。(注:大多数网络用户程 序使用 TCP) UDP: 用户数据报协议(User Datagram Protocol) 这是提供给用户进程的无连接协议,用于传送数据而不执行正确性检查。 FTP: 文件传输协议(File Transfer Protocol) 允许用户以文件操作的方式(文件的增、删、改、查、传送等)与另一主机相 互通信。 SMTP: 简单邮件传送协议(Simple Mail Transfer Protocol) SMTP 协议为系统之间传送电子邮件。 TELNET:终端协议(Telnet Terminal Procotol) 允许用户以虚终端方式访问远程主机 HTTP: 超文本传输协议(Hypertext Transfer Procotol) TFTP: 简单文件传输协议(Trivial File Transfer Protocol) 2、TCP/IP 特点 TCP/IP 协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口 层,这三层通常是在操作系统内核中实现。因此用户一般不涉及。编程时,编 程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数 方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过核 外的应用程序才能实现,所以要使用套接字(socket)来实现。 图 1.2 是 TCP/IP 协议核心与应用程序关系图。 (图 1.2) 二、专用术语 1、套接字 它是网络的基本构件。它是可以被命名和寻址的通信端点,使用中的每一个套 接字都有其类型和一个与之相连听进程。套接字存在通信区域(通信区域又称 地址簇)中。套接字只与同一区域中的套接字交换数据(跨区域时,需要执行 某和转换进程才能实现)。WINDOWS 中的套接字只支持一个域网际域。套 接字具有类型。 WINDOWS SOCKET 1.1 版本支持两种套接字:流套接字(SOCK_STREAM)和数据报 套接字(SOCK_DGRAM) 2、WINDOWS SOCKETS 实现 一个 WINDOWS SOCKETS 实现是指实现了 WINDOWS SOCKETS 规范所描述的全部功 能的一套软件。一般通过 DLL 文件来实现 3、阻塞处理例程 阻塞处理例程(blocking hook,阻塞钩子)是 WINDOWS SOCKETS 实现为了支持阻 塞套接字函数调用而提供的一种机制。 4、多址广播(multicast,多点传送或组播) 是一种一对多的传输方式,传输发起者通过一次传输就将信息传送到一组接收 者,与单点传送 (unicast)和广播(Broadcast)相对应。 Windows Socket 网络编程(二) Windows Socket 网络编程(二) 套接字编程原理 一、客户机/服务器模式 在 TCP/IP 网络中两个进程间的相互作用的主机模式是客户机/服务器模式 (Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通 信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式: 首先服务器方要先启动,并根据请示提供相应服务:(过程如下) 1、打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。 2、等待客户请求到达该端口。 3、接收到重复服务请求,处理该请求并发送应答信号。 4、返回第二步,等待另一客户请求 5、关闭服务器。 客户方: 1、打开一通信通道,并连接到服务器所在主机的特定端口。 2、向服务器发送服务请求报文,等待并接收应答;继续提出请求 3、请求结束后关闭通信通道并终止。 二、基本套接字 为了更好说明套接字编程原理,给出几个基本的套接字,在以后的篇幅中会给 出更详细的使用说明。 1、创建套接字socket() 功能:使用前创建一个新的套接字 格式:SOCKET PASCAL FAR socket(int af,int type,int procotol); 参数:af: 通信发生的区域 type: 要建立的套接字类型 procotol: 使用的特定协议 2、指定本地地址bind() 功能:将套接字地址与所创建的套接字号联系起来。 格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen); 参数:s: 是由 socket()调用返回的并且未作连接的套接字描述符(套接字号)。 其它:没有错误,bind()返回 0,否则 SOCKET_ERROR 地址结构说明: struct sockaddr_in short sin_family;/AF_INET u_short sin_port;/16 位端口号,网络字节顺序 struct in_addr sin_addr;/32 位 IP 地址,网络字节顺序 char sin_zero8;/保留 3、建立套接字连接connect()和 accept() 功能:共同完成连接工作 格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen); SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen); 参数:同上 4、监听连接listen() 功能:用于面向连接服务器,表明它愿意接收连接。 格式:int PASCAL FAR listen(SOCKET s, int backlog); 5、数据传输send()与 recv() 功能:数据的发送与接收 格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags); int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags); 参数:buf:指向存有传输数据的缓冲区的指针。 6、多路复用select() 功能:用来检测一个或多个套接字状态。 格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds, fd_set FAR * exceptfds,const struct timeval FAR * timeout); 参数:readfds:指向要做读检测的指针 writefds:指向要做写检测的指针 exc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论