计算机通信与信息系统_第1页
计算机通信与信息系统_第2页
计算机通信与信息系统_第3页
计算机通信与信息系统_第4页
计算机通信与信息系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机通信与信息系统 课程设计 内容安排 1.题目介绍 2.socket编程基础 3.题目1:网络i/o程序的实现 4.简单消息传送程序实例讲解 1.题目介绍 (1)网络i/o程序设计 n功能要求:客户端/服务器方式实现客户端 进程上传文件到服务器端。服务器端程序 支持同时与多个客户端进行连接。 n相关知识点:socket编程,文件读写、多 线程编程。 1.题目介绍 (2)http中间代理程序 n功能要求:设计一个web代理服务器,客户 端浏览器提交请求给代理服务器,代理服务 器根据客户端的请求地址的合法性,和服务 器返回网页内容是否包含某关键字,确定返 回给客户端的内容。 n相关知识点:so

2、cket编程、http协议 1.题目介绍 (2)http中间代理程序 浏 览 器 客 户端 w e b 服 务器 浏览器 客户端 中间代 理 w e b 服务器 1. socket编程基础 socket是什么 nsocket是进程之间使用unix文件描述符 (file descriptor)进行通信的一种方式。 n在unix系统中,通过对文件描述符的 read和write操作实现i/o操作。 neverything in unix is a file! ninternet sockettcp/ip 1. socket编程基础 两种internet sockets nstream sockett

3、cp n提供可靠的有连接的双向通信:有确认、拥 塞控制、流量控制等。 ndatagram socketudp n无连接:不需要维护一个打开的连接,所做 的只是将数据打包并发出去。 1.socket编程基础 socket提供的系统调用或函数 socket()获得一个socket文件描述符 bind将指定socket绑定到某端口 connect连接到远程某个端口 listen()侦听等待远程连接 accept()接受了一个远程连接 send(),recv()发送或接收数据(tcp) sendto(),recvfrom() 发送或接收数据(udp) 1. socket编程基础 socket提供的系统

4、调用或函数 close()关闭socket描述符 shutdown()改变socket可用性 getpeername()获得连接另外一端的地址信息 gethostname()获得本机主机名 gethostbyname()根据主机名得到主机地址信息 inet_addr()将ip地址字符串转换成网络字节序 的4字节地址 1. socket编程基础 重要的数据结构 nsockaddr结构,存放各种sockets的地 址信息 struct sockaddr unsigned short sa_family; / address family, af_xxx char sa_data14; / 14 b

5、ytes of protocol address ;/总长度16字节 1. socket编程基础 重要的数据结构 nsockaddr_in,存放internet socket地址信息 struct sockaddr_in short int sin_family; / address family unsigned short int sin_port; / port number struct in_addr sin_addr; / internet address unsigned char sin_zero8; / same size as struct sockaddr ; struc

6、t in_addr uint32_t s_addr; / thats a 32-bit int (4 bytes) ; 1. socket编程基础 网络字节序的转换 n不同的硬件平台在内存中表示数据方式 是不同的,有两种: nlittle-endian:低字节在低地址,高字节在 高地址 nbig-endian:高字节在低地址,低字节在 高地址 n网络字节序被统一定义成big-endian方 式 1. socket编程基础 网络字节序的转换 nhtons() host to network short nhtonl() host to network long nntohs() network

7、to host short nntohl() network to host long sin_addr 和 sin_port必须为网络字节序, 而sin_family不需要,为什么? 1. socket编程基础 ip地址的处理 n问题1:如何把ip地址“”填到 sockaddr_in类型的变量ina中? 1.ina.sin_addr.s_addr = inet_addr(7); 2.inet_aton(7, n问题2:如何将sockaddr_in中的ip地址转换 为形如“”的字符串? inet_ntoa(

8、ina.sin_addr) 1. socket编程基础 客户机/服务器模式 1. socket编程基础 客户机/服务器模式 socket() bind() listen() recv() close() socket() connect() recv() send() close() blocks until server receives a connect request from client data data server client accept() send() connect negotiation 1. socket编程基础 不同平台下编写socket程序 nlinux平台

9、下,需要安装gcc编译器,用cc 命令编译c源文件,c源文件需要包含定 义相关系统调用的的头文件,如: n#include n#include 1. socket编程基础 不同平台下编写socket程序 nwindows下vc+ #include wsadata wsadata; if (wsastartup(makeword(1, 1), exit(1); wsacleanup(); n工程设置包含对wsock32.lib 的链接 2.网络i/o程序 功能要求: 网络间进程的文本消息传递 网络间进程的文件传送 文件传送服务器,支持同时多个连接 2.网络i/o程序 n客户端文件传送过程解析:

10、1.客户端与服务器连接后,以消息的形式将文件名和文件大 小发给服务器 2.打开要发送的文件,读取一部分数据发给服务器 3.循环第2步,直到到达文件尾 n服务器端文件接收过程解析: 1.收到文件名和长度后,创建文件 2.接收客户端发送的数据保存到文件中 3.循环第2步,直到收到数据长度为文件名长度 n需要用到c语言的文件读写函数: nfopen, fread, fwrite, fclose, fseek等。 2.网络i/o程序 n服务器端支持同时多个客户端连接方法: n两个端口:监听端口和数据传送端口 n服务器监听到一个连接后,新建线程或进程来处理 与这个连接的文件传送,新线程或进程会随机分配 一个端口地址用来数据传送 n原有线程或进程继续监听其他连接 n平台差异: nlinux或unix:用fork()系统调用新建进程 nwindows:crea

温馨提示

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

评论

0/150

提交评论