Unix程序设计网络编程教程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch5 Unix Programming – network programming 本章重点 Socket的基本概念 如何实现面向连接的TCP编程 如何实现非连接的TUDP编程 复杂网络程序的实现 Contents Socket Basics TCP programming UDP programming Advanced network programming 5.1 Socket Basics socket是网络编程的一种接口,它是一种特殊的I/O,用socket函数建立一个Socket连接,此函数返回一个整型的socket描述符,随后进行数据传输。 一个IP地址,一个通讯端口,就能确定一个通讯程序的位置。为此开发人员专门设计了一个套接结构,就是把网络程序中所用到的网络地址和端口信息放在一个结构体中。 一般套接口地址结构都以“sockaddr”开头。socket根据所使用的协议的不同可以分TCP套接口和UDP套接口,又称为流式套接口和数据套接口。 5.1 Socket Basics Three Types of Sockets 流套接字(SOCK_STREAM) 可靠的、面向连接的通信。 使用TCP协议 数据报套接字(SOCK_DGRAM) 无连接服务 使用UDP协议 原始套接字(SOCK_RAW) 允许对底层协议如IP、ICMP直接访问 socket套接口的数据结构 两个重要的数据类型:sockaddr和sockaddr_in,这两个结构类型都是用来保存socket信息的,如IP地址、通信端口等。 基于连接的服务 Server程序的作用 程序初始化 持续监听一个固定的端口 收到Client的连接后建立一个socket连接 与Client进行通信和信息处理 接收Client通过socket连接发送来的数据,进行相应处理并返回处理结果 通过socket连接向Client发送信息 通信结束后中断与Client的连接 Client程序的作用 程序初始化 连接到某个Server上,建立socket连接 与Server进行通信和信息处理 接收Server通过socket连接发送来的数据,进行相应处理 通过socket连接向Server发送请求信息 通信结束后中断与Server的连接 无连接的服务 UDP编程的适用范围 部分满足以下几点要求时,应该用UDP 面向数据报 网络数据大多为短消息 拥有大量Client 对数据安全性无特殊要求 网络负担非常重,但对响应速度要求高 例子:ICQ、视频点播 具体编程时的区别 socket()的参数不同 UDP Server不需要调用listen和accept UDP收发数据用sendto/recvfrom函数 TCP:地址信息在connect/accept时确定UDP:在sendto/recvfrom函数中每次均需指定地址信息 UDP:shutdown函数无效 5.2 TCP编程 基于TCP协议的编程,其最主要的特点是建立完连接后,才进行通信。 常用的基于TCP网络编程函数及功能 头文件 #include sys/types.h #include sys/socket.h 基于TCP网络编程函数 socket: creates an endpoint for communication and returns a descriptor. int socket(int domain, int type, int protocol); “domain” parameter Specifies a communication domain, that is, selects a protocol family, such as AF_INET,AF_INET6 ... “type” parameter Specifies the communication semantics. Three main types are: SOCK_STREAM, SOCK_DGRAM, SOCK_RAW “protocol” parameter usually 0 (default). 基于TCP网络编程函数 bind: binds a name to a socket int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); struct sockaddr { sa_family_t sa_family; char sa_data[14]; } inet_aton inet_ntoa Internet address manipulation routines int inet

文档评论(0)

金不换 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档