




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应用层的客户 服务器模式 1 实验目的实验目的 了解C C 中与网络编成有关的重要数据结构 了解cl编译器的使用 了解进行网络通信时所用的函数的用法及其参数的含义 了解winsock 对网络编程的支持 掌握网络通信程序的工作流程 2 相关背景相关背景 2 1 客户机客户机 服务器模型服务器模型 服务器一般是指能在网络上提供服务的任何程序 服务器接受网络上的请求 完成 服务后将结果返回给申请者 客户端进程向服务器发出一个申请并等待响应 在这 里应该注意注意的是 服务器在和客户端进程通信开始之前就已成经运行 并且通常持 续不断的接受请求 发送响应 而客户端进程则是在发出请求并等待响应的 它通 常在有限次使用服务器后终止 2 2 C C 中与网络编成有关的重要数据结构 这是中与网络编成有关的重要数据结构 这是 winsock1 1winsock1 1 版本 版本 1 IP 地址和端口的介绍 Internet 协议地址简称IP 地址 它是整个网络协议的核心 在不同的网络或 相同的网络中的结点进行通信时 需要使用IP 地址 也就是说 Internet 网上的 计算设备或主机都分配有一个惟一的地址 叫IP 地址 一个IP 地址长为32 比特 分为4 个字节 比如 IP 地址10100110 01101111 00000001 00000110一般都是用 二进制数位模式表示IP 地址 它是非常难以识记的 为容易阅读和理解 通常将 IP 地址以4 个句点分隔开的十进制数字表示 称为点分十进制表示法 dotted decimal notation 上面的IP 地址用这种方法表示为166 111 1 6 端口 port 是标志传输层协议和应用程序之间的数据接口 在客户端和服务器端通信时 真正 完成通信功能的不是两台计算机 而是两台计算机上的进程 如果要标识具体的进 程 需要引入新的地址空间 这是端口 定义端口是为了解决与多个应用程序同时 进行通信的问题 每个端口有一个16 位的标志符 称为端口号 所以端口号的应 用范围在0 65536之间 但1024 以下的端口号被标准服务保留 因此在这个协议中 可以用到的端口号的范围在1024 65536 之间 2 Winsock中通过 SOCKADDR IN 结构来指定IP地址和服务端口 PORT 信息 该结构格式如下 struct sockaddr in short sin family 必须设为AF INET 在使用TCP IP协议族时 u short sin port 通信端口 struct in addr sin addr 用于把IP地址保存为一个4字节的整数 点分十进制表示 从左到右存储 usinged long inet addr const char FAR cp 该函数用于将以字符串表示的IP地址转换为一个整数 char sin zero 8 3 存储主机信息的结构 struct hostent char FAR h name official name of host char FAR FAR h aliases alias list short h addrtype host address type short h length length of address char FAR FAR h addr list list of addresses define h addr h addr list 0 address for backward compat 4 winsock 的初始化 每个winsock应用都必须加载winsock DLL的相应版本 上述内容版本号市1 1 如果调用winsock之前没有加载winsock库将会返回错误 加载函数如下 int PASCAL FAR WSAStartup IN WORD wVersionRequired OUT LPWSADATA lpWSAData wVersionRequired 指定准备加载的winsock库版本 高字节指定副版本 低字节指 定主版本 5 winsock的卸载 使用完winsock库以后 要把它卸载掉 卸载函数如下 int PASCAL FAR WSACleanup void 2 3 3 网络通信所用的函数 网络通信所用的函数 1 创建套接字 socket SOCKET PASCAL FAR socket IN int af IN int type IN int protocol 2 名字解析 有 IP 地址获取主机信息 struct hostent FAR PASCAL FAR gethostbyaddr IN const char FAR addr IN int len IN int type 有主机名获取主机信息 struct hostent FAR PASCAL FAR gethostbyname IN const char FAR name 以下两个函数用于获取主机所用的端口号 struct servent FAR PASCAL FAR getservbyport IN int port IN const char FAR proto struct servent FAR PASCAL FAR getservbyname IN const char FAR name IN const char FAR proto struct servent 结构如下所示 struct servent char FAR s name official service name char FAR FAR s aliases alias list ifdef WIN64 char FAR s proto protocol to use short s port port else short s port port char FAR s proto protocol to use endif 3 服务器 API 函数 1 bind 用于绑定 socket 和已知地址 int PASCAL FAR bind IN SOCKET s IN const struct sockaddr FAR addr IN int namelen 2 listen 用于指示套接字进入等待连接 int PASCAL FAR listen IN SOCKET s IN int backlog 3 accept 接收客户的连接请求 SOCKET PASCAL FAR accept IN SOCKET s OUT struct sockaddr FAR addr IN OUT int FAR addrlen 4 客户端 API 函数 客户端工作较简单 1 创建套接字 2 解析服务器名 3 连接服务器 连接服务器的函数 connect int PASCAL FAR connect IN SOCKET s IN const struct sockaddr FAR name IN int namelen 5 数据传输 连接建立后就可以开始传输数据 1 send 用于已创建的 socket 上进行数据发送 int PASCAL FAR send IN SOCKET s IN const char FAR buf IN int len IN int flags 2 recv 接收数据的函数 int PASCAL FAR recv IN SOCKET s OUT char FAR buf IN int len IN int flags 6 中断连接 closesocket 函数用于关闭套接字 int PASCAL FAR closesocket IN SOCKET s 2 4 4 winsock 编程的基本知识编程的基本知识 用 socket 实现两台计算机相互通信的基本流程参见前面介绍的 winsock 编程的相关知 识 2 5 clcl 编译器的介绍编译器的介绍 见附录 3 实验内容和步骤实验内容和步骤 3 1 基本内容 基本内容 启动程序 点击开始菜单 运行 打开控制台窗口 执行如下命令 cl o Client Client c ws2 32 lib cl o server server c ws2 32 lib 得到client exe和server exe程序 运行这两个程序 客户端的使用 Command Line Options client p x s IP n x o p x Remote port to send to s IP Server s IP address or hostname n x Number of times to send message o Send messages only don t receive 服务器短的使用 Command line options server p x i IP o p x Port number to listen on i str Interface to listen on o Receive only don t echo the data back 例如 server p 5150 i 218 196 207 215 o client p 5150 i 218 196 207 215 n 10 o 通过设置不同的参数 考虑为什么会出现这种现象 能用什么方法解决 3 2 扩展内容 扩展内容 通过阅读源程序 画出服务器端和客户端的程序流程图 对源程序进行阅读分析 了解程序实现的具体的细节 掌握服务器和客户端传送 数据的机制 客户端和服务器端是怎样建立连接的 画出程序的流程图 4 实验要求实验要求 基本要求 记录实验的基本数据 包括选用的计算机的IP 地址 连接的端口号 思考题 如果发送端和接收端的端口号不同 将会出现什么情况 为什么 扩展要求 在读源程序之后画出程序的流程图 5 参考资料参考资料 2 windows 网络编程技术 6 附录附录 cl 编译器的相关用法编译器的相关用法 C C COMPILER OPTIONS OPTIMIZATION O1 minimize space Op improve floating pt consistency O2 maximize speed Os favor code space Oa assume no aliasing Ot favor code speed Ob inline expansion default n 0 Ow assume cross function aliasing Od disable optimizations default Ox maximum opts Ogityb1 Gs Og enable global optimization Oy enable frame pointer omission Oi enable intrinsic functions CODE GENERATION G3 optimize for 80386 Gy separate functions for linker G4 optimize for 80486 Ge force stack checking for all funcs G5 optimize for Pentium Gs num disable stack checking calls G6 optimize for Pentium Pro Gh enable hook function call GB optimize for blended model default GR enable C RTTI Gd cdecl calling convention GX enable C EH same as EHsc Gr fastcall calling convention Gi enable incremental compilation Gz stdcall calling convention Gm enable minimal rebuild GA optimize for Windows Application EHs enable synchronous C EH GD optimize for Windows DLL EHa enable asynchronous C EH Gf enable string pooling EHc extern C defaults to nothrow GF enable read only string pooling QIfdiv enable Pentium FDIV fix GZ enable runtime debug checks QI0f enable Pentium 0 x0f fix OUTPUT FILES Fa file name assembly listing file Fo name object file FA sc configure assembly listing Fp name precompiled header file Fd file name PDB file Fr file name source browser file Fe name executable file FR file name extended SBR file Fm file name map file PREPROCESSOR C don t strip comments FI name forced include file D define macro U remove predefined macro E preprocess to stdout u remove all predefined macros EP preprocess to stdout no line I add to include search path P preprocess to file X ignore standard places LANGUAGE Zi enable debugging information Zl omit default library name in OBJ ZI enable Edit and Continue debug info Zg generate function prototypes Z7 enable old style debug info Zs syntax check only Zd line number debugging info only vd 0 1 disable enable vtordisp Zp n pack structs on n byte boundary vm type of pointers to members Za disable extensions implies Op noBool disable bool keyword Ze enable extensions default MISCELLANEOUS help print this help message V set version s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版高端酒店窗帘采购供应合同示例
- 2025年企业定制化电脑配置采购合同示例
- 2025年新能源车型个人购销合同书
- 2025年事业单位职工劳动合同范本及实施指南
- 2025版农业生态园观光果园使用权转让合同
- 2025版生态修复工程施工合同范本下载
- 2025版智能交通信号控制系统建设与维护合同参考样本
- 2025年度酒店住宿行业第三方代付款协议
- 2025年节能LED灯具研发与生产合作协议
- 2025动产抵押个人消费贷款合同参考范本
- 纪委案件审理课件教材
- 生活中的会计课件
- 辽宁大学学生手册
- CorelDRAW教学讲解课件
- 湘美版美术一年级上册全册课件
- 酒水购销合同范本(3篇)
- 师说一等奖优秀课件师说优质课一等奖
- 学习罗阳青年队故事PPT在急难险重任务中携手拼搏奉献PPT课件(带内容)
- 小学生打扫卫生值日表word模板
- 新水浒q传乡试会试测验题目
- 小学一年级开学第一课
评论
0/150
提交评论