互联网络程序设计第2章.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
struct file_operations … ssize_t *read struct file *, char __user *, size_t, loff_t * ; ssize_t *write struct file *, const char __user *, size_t, loff_t * ; ssize_t *aio_read struct kiocb *, const struct iovec *, unsigned long, loff_t ; ssize_t *aio_write struct kiocb *, const struct iovec *, unsigned long, loff_t ; … int *ioctl struct inode *, struct file *, unsigned int, unsigned long ; ; read/write函数调用与socket关联的file_operations结构中操作函数,向外收发数据 对应于BSD的协议栈,write最终要调用sosend sosend函数会调用协议的pr_usrreq函数 read要调用soreceive函数 soreceive函数会调用协议的pr_usrreq函数 pr_usrreq是每个协议需要实现的用户对协议的操作函数。除了收发数据最终会调用pr_usrreq外,bind、connet等函数,由于会对TCP协议进行操纵,也会调用pr_usrreq。 pr_usrreq在哪里?在一个称为protosw结构中定义为一个函数插槽 协议的堆叠,《TCP/IP详解卷2》第7章 read函数 #include ssize_t read int fd, void *buf, size_t count ; 返回值: 0正确返回; -1, 出错 count表示buf的大小,返回值无论如何不会超过它的大小 有两种返回0的情况 对端关联TCP连接,读到头了; count 0 返回-1,需要检查errno,有些错误可以处理 EAGAIN/EWOULDBLOCK,表示非阻塞的读写 EINTR,读阻塞被信号中断 #include ssize_t write int fd, const void *buf, size_t count ; 返回值: 0,实际发送的数据个数; -1,出错 向对端发送数据,count表示buf中所含数据的大小 出错的情况 EINTR,被信号中断 EAGAIN,非阻塞发送 EPIPE,表示socket另一端写关闭,何种情况? 数据传输函数-send #include #include ssize_t send int s, const void *msg, size_t len, int flags ; 返回:非0-发送成功的数据长度;-1-出错; flags 是传输控制标志,其值定义如下: 0:常规操作,如同write 函数 MSG_OOB,发送带外数据。 MSG_DONTROUTE:忽略底层协议的路由设置,只能将数据发送给与发送机处在同一个网络中的机器上。 数据传输函数-recv #include #include ssize_t recv int s, void *buf ,size_t len, int flags ; 返回:大于0表示成功接收的数据长度;0: 对方已关闭,-1:出错。 flags是传输控制标志,其值定义如下: 0:常规操作,如同read 函数; MSG_PEEK:只查看数据而不读出数据,后续读操作仍然能读该数据; MSG_OOB:忽略常规数据,而只读带外数据; MSG_WAITALL:recv函数只有在将接收缓冲区填满后才返回。 思考题 使用C++封装IPv4和IPv6地址。提示:参考boost::asio库、ACE库。 UDP是否可以采用read、write函数发送数据?应该如何做到?为什么UDP通常采用recvfrom/sendto来收发数据? * * * 第二章、套接口编程基础 套接口基本概念 套接口地址结构 字节序 网络编程基本模型 一些常用函数 概述 本章主要介绍网络编程的基本数据结构、字节序、网络编程的基本模型 由于课时限制,Socket API的基本编程函数不集中讲述,将在本章和下一章中结合基本概念和编程讲述 下一章,将结合简单的迭代服务器讲述套接口的基本函数 1. 套接字概念 Unix、TCP/IP协议的发展 Unix与BSD TCP/IP协议的实现 以BSD为基础的协议编程接口——socket API成为网络编程的标准 4.4BSD的协议栈中实现中了4种协

文档评论(0)

精品家园 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档