计算机网络实验一编程

上传人:宝路 文档编号:49839793 上传时间:2018-08-03 格式:PPTX 页数:27 大小:2.18MB
返回 下载 相关 举报
计算机网络实验一编程_第1页
第1页 / 共27页
计算机网络实验一编程_第2页
第2页 / 共27页
计算机网络实验一编程_第3页
第3页 / 共27页
计算机网络实验一编程_第4页
第4页 / 共27页
计算机网络实验一编程_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《计算机网络实验一编程》由会员分享,可在线阅读,更多相关《计算机网络实验一编程(27页珍藏版)》请在金锄头文库上搜索。

1、计算机网络实验实验一 Windows Socket 编程 华中科技大学电信学院2015Windows Socket 编程l实验目的lSocket编程l 常用APIl实验软件l实验内容2实验目的l通过编程了解 Client/Server 结构的网络通信模型l掌握Socket机制的工作原理l掌握基于Client/Server结构的Windows Socket TCP/UDP程序设计方法3Client-Server 结构l在TCP/IP网络环境下,不同主机上的两个应用程 序通信普遍采用客户端-服务器模型 (client-server architecture, C/S)lClient在需要服务时向s

2、erver提出申请lServer等待client提出请求并予以相应lServer始终运行,监听网络接口l收到client请求启动服务进程响应客户,同时继续监听服务窗口,保证后续的client也能及时得到服务4背景知识Windows Socket是什么?lWindows Sockets是Microsoft Windows的网络程序设计接口lSocket于1981年在BSD4.1 UNIX中 提出l客户端/服务器模型 580年代初,美国国防部高级研究计划局 (ARPA)给UC Berkeley提供了资金,让他们 在UNIX操作系统下实现TCP/IP协议。在这 个项目中,研究人员为TCP/IP网络通

3、信开 发了一个API(应用程序接口),这个API称为 Socket接口(套接字)。今天Socket接口是 TCP/IP网络最为通用的API,也是在Internet 上进行应用开发最为通用的API。90年代初,由Microsoft联合其他几家公 司共同制定了一套Windows下的网络编程 接口,即Windows Socket规范。它是 Berkeley Socket的重要扩充,主要是增加了 一些异步函数,并增加了符合Windows消 息驱动特性的网络事件异步选择机制。 WinSock规范是一套开放的、支持多种协议 的Windows下的网络编程接口。从1991年 的1.0版到1995年的2.0.8

4、版,经过不断完善 ,已成为Windows网络编程的事实上的标 准。一个本地的, 应用程序创建的, 操作系统控制的接口。 通过该接口 应用进程可以 从另一个应用进程 发送或者接收消息socketSocket套接字l目标:学习如何建立客户端/服务器应用程序,使 用套接字进行通信l套接字(socket): 应用进程之间的接口,实现端到 端的传输协议6Internet由操作 系统控制由应用 开发者 控制传输层应用层物理层数据链路层网络层进程传输层应用层物理层数据链路层网络层进程套接字Socket是应用层与TCP/IP协议栈通信的中间软件抽象层WinSock DLLlWinSock与操作系统的关系7应用

5、程序 1应用程序 2网络编程接口 如 WinSock API网络通信协议 如 TCP/IP协议操作系统 如 Windows物理通信介质动态链接库16位版:WINSOCK.DLL 32位版:WSOCK32.DLLTCP套接字编程l服务器做好准备l服务器进程必须首先运行l服务器必须先创建socket等待 处理客户端的连接请求l客户端与服务器的联系l创建客户端本地的TCP socketl指明服务器进程的IP地址和 端口号l当客户端创建socket后,客户 端的TCP socket与服务器TCP socket建立连接8l服务器收到客户端连接请 求后,创建新的socket用 来与客户端通信l允许服务器与

6、多个客户端通 信l源端口号用来识别客户端TCP协议提供了客户 端和服务器之间可靠 的,按次序的字节流 传输 TCP套接字编程l如同中国移动的10086服务l调用socket()建立一个套接口 (移动建立好一个电话 总机)lbind()将该接口和本地IP地址和Port绑定 (设定总机 号为10086)llisten()让套接口做好侦听准备 (随时准备接听电话)l客户在套接口建立起来之后,便可调用connect()连 接服务器指定的Port (用户可拨打10086要求服务 )l服务器调用accept()来接收客户的连接请求 (一旦有 电话就接起)l服务器收到请求后,建立新的socket来对此连接服

7、 务,原来的socket回到监听等待状态 (总机接电话 后转某分机服务,本身继续等待新的电话)l连接建立后,send()和recv()来发送和接收数据 (客 户与客服对话)l数据传送结束,调用closesocket()关闭套接口 (结束 请挂机)9常用APIlAPI (Application Programming Interface) 应用程序接口lDLL装载lWinSock服务由动态链接库WinSock DLL提供,它完成 WinSock的初始化任务,协商WinSock的版本支持,并分 配必要的资源。在使用WinSock API之前,必须调用 WSAStartup函数对其进行初始化。lin

8、t WSAStartup(WORD v, (LPWSADATA) int WSAreturn;struct hostent *hp;struct sockaddr_in sin;char *host;char bufMAX_LINE;int s;int len;13Socket编 程库文件示例: C客户端 (TCP)if (argc=2) host = argv1;else fprintf(stderr, “usage: simplex-talk hostn“); exit(1); WSAreturn = WSAStartup(0x101, if(WSAreturn) fprintf(stde

9、rr, “simplex-talk: WSA error.n“); exit(1); /* translate host name into peers IP address */ hp = gethostbyname(host); if (!hp) fprintf(stderr, “simplex-talk: unknown host: %sn“, host); exit(1); /* build address data structure */memset(char *)memcpy(char *)sin.sin_family = AF_INET;sin.sin_port = htons

10、(SERVER_PORT); 14将远程主机的名称 转换成IP地址参数初始化程序参数 处理WinSock的初始化示例: C客户端 (TCP)/* active open */ if (s = socket(PF_INET, SOCK_STREAM, 0) #include #include #include #define SERVER_PORT 5432 #define MAX_PENDING 5 #define MAX_LINE 256int main() WSADATA WSAData;int WSAreturn;/* server address */struct sockaddr_i

11、n sin;struct sockaddr_in remote;char bufMAX_LINE;int len;int s, new_s;WSAreturn = WSAStartup(0x101, if(WSAreturn) fprintf(stderr, “simplex-talk: WSA error.n“); exit(1); 16Socket编 程库文件WinSock的初始化示例: C服务器(TCP)/* build address data structure */memset(char *)sin.sin_family = AF_INET;sin.sin_addr.s_addr

12、= INADDR_ANY;sin.sin_port = htons(SERVER_PORT);/* setup passive open */if (s = socket(PF_INET, SOCK_STREAM, 0) compilerlinker settings下导入相 应lib库lCodeBlocksMinGWlib libwsock32.a libws2_32.a24实验内容l运行simplex-talk例程,理解代码并观察现象l修改simplex-talk,编制duplex-talk程序,支持 client和server的双向通信l利用windows时间函数,编制简单的定时器, 模拟client和server之间的stop-and-wait的动作25实验操作示例l在一台主机上运行服务器程序,生成server.exe等待客 户端连接l在另一台主机上运行客户端程序,生成client.exel在cmd下来到client.exe所在目录,执行client.exe 服务 器主机名l结果示例客户端显示: 服务器显示:26谢谢谢谢! !华中科技大学电信学院2015

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号