网络编程实用第二版-叶树华_第2章说课.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络编程实用教程 第2章 套接字网络编程接口基础 套接字网络编程接口的产生与发展过程 套接字编程的基本概念 面向连接的套接字编程 无连接的套接字编程 原始套接字 2.1 套接字网络编程接口的产生与发展 2.1.2 套接字编程接口的起源与应用 2.1.3 套接字编程接口的两种实现方式 套接口---是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。 (3)原始式套接字(RAW SOCKET) 原始式套接字允许对较低层次的协议,如IP、ICMP直接访问,用于检验新的协议的实现。 2.2.3 套接字的应用场合 (4)这些数据结构的一般用法: struct sockaddr_in myad; memset(myad,0,sizeof(struct sockaddr_in)); myad.sin_family=AF_INET; myad.sin_port=htons(8080); myad.sin_addr.s_addr=htonl(INADDR-ANY); accept(listenfd,(sockaddr*)(myad),addrlen); 网络应用程序要在不同的计算机中运行,本机字节顺序是不同的,但是,网络字节顺序是一定的。 应用程序在编程的时候,在把IP地址和端口号装入套接字的时候,应当把它们从本机字节顺序转换为网络字节顺序;相反,在本机输出时,应将它们从网络字节顺序转换为本机字节顺序。 ntohs() 短整数网络顺序转换为本机顺序,用于端口号。 ntohl() 长整数网络顺序转化为本机顺序,用于IP地址。 (1)inet-addr函数 unsigned long inet-addr( const char* cp) 入口参数cp:点分十进制形式的IP地址。 返回值: 网络字节顺序的IP地址,是无符号的长整数, (2)inet_ntoa函数 char* inet_ntoa(struct in_addr in) 入口参数in:包含长整型IP地址的 in_addr 结构变量, 返回值: 指向点分十进制IP地址的字符串的指针。 4.域名服务 2.3.4 进程的阻塞问题和对策 1.什么是阻塞 阻塞是指一个进程执行了一个函数或者系统调用,该函数由于某种原因不能立即完成,因而不能返回调用它的进程,导致进程受控于这个函数而处于等待的状态,进程的这种状态称为阻塞。 4.一种解决方案 利用UNIX操作系统的FORK()系统调用,编制多进程并发执行的服务器程序。可以创建子进程。对于每一个客户端,用一个专门的进程为它服务,通过进程的并发执行,来实现对多个客户的并发服务。 2.能引起阻塞的套接字调用 (1)ACCEPT() (2)READ()、RECV()和READFROM() (3)WRITE()、SEND()和SENDTO() (4)CONNECT() (5)SELECT() (6)CLOSESOCKET() 3.阻塞工作模式带来的问题 图2.9 采用阻塞工作模式的服务器不能很好地为多个客户服务 * * 套接字应用程序编程接口:网络应用程序通过网络协议栈进行通信时所使用的接口,即应用程序与协议栈软件之间的接口,简称套接字编程接口(Socket API)。 加州大学伯克利(Berkley)分校开发并推广了BSD UNIX(Berkeley Software Distribution UNIX)操作系统,套接字编程接口是这个操作系统的一个部分。 由于这个套接字规范最早是由Berkeley大学开发的,一般将它称为Berkeley Sockets规范。 在操作系统的内核中增加相应的软件来实现。 通过开发操作系统之外的函数库来实现。 2.2 套接字编程的基本概念 图2.1 电插座与电话插座的作用 2.2.1 什么是套接字(SOCKET) 图2.2 应用进程、套接口、网络协议栈及操作系统的关系 2.2.2 套接字的特点 1.通信域 通信域---是为了处理一般的进程通过套接字通信而引入的一种抽象概念,套接字通常只和同一域中的套接字交换数据。 2.套接字具有三种类型 (1)数据报套接字(Datagram SOCKET) 图2.3 在Internet通信域中,数据报套接字基于UDP协议 (2)流式套接字(Stream SOCKET) 图2.4 在Internet通信域中,流式套接字基于TCP

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档