《网络通信程序设计》实验指导书.doc_第1页
《网络通信程序设计》实验指导书.doc_第2页
《网络通信程序设计》实验指导书.doc_第3页
《网络通信程序设计》实验指导书.doc_第4页
《网络通信程序设计》实验指导书.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

网络通信程序设计编撰闽江学院计算机实验教学中心印制3目 录实验一 windows简单程序设计 1实验二 netbios网络程序设计 3实验三 基于netbios数据报通信程序设计 4 实验四 基于netbios会话通信程序设计 6实验五 winsock网络信息查询函数的应用 8实验六 winsock会话通信程序设计(1) 9实验七 winsock会话通信程序设计(2) 11实验八 winsock多播与广播通信程序设计 12实验九 多线程网络编程 14实验十 winsock综合应用编程 15实验一 windows简单程序设计实验目的了解在vc中windows sdk应用程序的开发,熟悉win32 application和win32 console application的程序结构实验环境操作系统:windows2000/xp编程软件:vc+实验内容 编写程序,要求程序能实现对字符串的处理; 编写一个win32 application类型的windows窗口程序。实验步骤(1)win32 console程序开发 运行microsoft visual c+ 创建工程:选择菜单“file”“new”,在打开的对话框中,切换到“projects”标签下,并选择“win32 console application”作为工程类型,分别在project name和location文本框中输入工程的名字和位置(可自行定义),单击“ok”完成工程的创建。 编写代码实现:输入一串,比较字符串是否为“exit”,是则退出程序,否则输出串长度。循环输入第二个串,重复上述处理(请给出程序代码)。 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。(2)win32 application窗口应用程序开发 程序结构:l 注册窗口类l 创建窗口l 显示和更新窗口l 创建消息循环l 处理消息 创建工程:同上,注意这里要选择“win32 application”作为工程类型 编写源程序:程序可参考书上p9p11,书上源程序存在部分错误,修正如下:l 添加两个头文件:windows.h , stdio.hl 在winmain函数的实现程序前添加一段代码用于声明过程函数:long far pascal mainwndproc(hwnd hwnd,uint message,wparam wparam,lparam lparam);l 在winmain函数的实现程序中的变量定义部分增加一个变量申明:hwnd ghwndmain;l 书上第14行wc.hbrbackground=getstockobject(white_brush)修改为wc.hbrbackground=(hbrush)getstockobject(white_brush)l 在注释“显示窗口”下面增加一行,添加一句更新窗口的代码:updatewindows(ghwndmain);l 在mainwndproc函数的实现程序中将窗口显示消息处理部分的代码(这部分有3行代码)修改如下:case wm_paint: /窗口显示消息处理hdc hdc;paintstruct ps;hdc=beginpaint(hwnd,&ps);textout(hdc,0,0,这是我的第一个windows程序,strlen(这是我的第一个windows程序);endpaint(hwnd,&ps);break; 形成目标程序 运行程序结果记录与分析 第一个程序在屏幕上输出的结果是? 第二个程序运行的正确结果是一个标准的windows窗口,请问该窗口的标题是什么?窗口区的背景是什么颜色?并写出窗口显示的文字内容。思考题 windows sdk应用程序有哪两种工程类型?它们分别以什么函数作为自己的入口点的?开发windows的窗口程序应该选择哪种工程类型呢? 在windows程序中,winmain函数主要完成哪些操作,对消息的处理由哪个函数完成?实验二 netbios网络程序设计实验目的了解在vc中win32 console application的程序结构,编写网络应用程序实验内容 编写一个win32 console 程序,初始化netbios。 改进初始化netbios程序,读出系统所有的lana编号,并复位各网卡上的netbios。实验环境操作系统:windows2000/xp编程软件:vc+实验步骤(1)win32 console程序开发,初始化netbios 运行microsoft visual c+ 创建工程:选择菜单“file”“new”,在打开的对话框中,切换到“projects”标签下,并选择“win32 console application”作为工程类型,分别在project name和location文本框中输入工程的名字和位置(可自行定义),单击“ok”完成工程的创建。 创建c+ source file ,编写程序 (程序可参考书上p33p34): 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。(2)改进初始化netbios程序 编写源程序:对(1)的程序进行改造 形成目标程序(同上) 运行程序结果记录与分析 第一个程序运行后输出什么? 第二个程序运行后输出什么,与第一个程序相比有什么意义?思考题系统的lana编号个数与什么有关,复位netbios都能成功吗,不成功的原因是什么?运行加名字和删除名字的程序(程序可参考书上p35p36),若注册成功,输出对应的名字编号。实验三 基于netbios数据报通信程序设计实验目的掌握如何在netbios接口上开发数据报通信程序,并分析一对一与一对多通信。实验环境操作系统:windows2000/xp编程软件:vc+/turbo c实验内容创建两个应用程序:“abc1”和“xyz1”,其中“abc1”负责数据报的发送,而“xyz1”负责接收。具体通信过程如下:当用户从键盘上输入一个字符串后,发送程序“abc1”就将该字符串作为数据报直接发送给接收方“xyz1”,接收方在收到一个数据报后,将收到的字符串显示在屏幕上,如果用户输入的是“exit”,则双方结束通信,程序退出。 对的程序进行改造以实现组播通信,其中多播组名为“group1”.实验步骤(1)简单点对点数据报通信 程序流程图:resetncb()addname()datagramsend()deletename()resetncb()addname()datagramrecv()deletename()发送数据报abc1xyz1 编写源程序:(程序可参考书上p38p42) 加文件头#include #pragma comment(lib,netapi32.lib) 或者 设置:vc里面,菜单 project - settings - link 里面选择 general 在object/library moduless一栏里面添加netapi32.lib 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。(2)组播通信程序设计 只需对(1)的程序进行简单修改即可实现,关键是增加组名的注册(程序如下)。uchar addgroupname(char *name,uchar lana,uchar *namenum) ncb ncb; memset(&ncb,0,sizeof(ncb); ncb.ncb_command=ncbaddgrname; ncb.ncb_lana_num=lana; strcpy(char *) ncb.ncb_name,name); netbios(&ncb); *namenum=ncb.ncb_num; return (ncb.ncb_cmd_cplt);该应用程序的测试请在局域网内的多台主机上实现。结果记录与分析要求:至少测试三组数据,并做好相关的记录和分析思考题1)如何对上述通信过程作些修改,以实现双向通信(即abc既能发送数据给xyz,也能接收xyz传给它的数据),请画出它们的通信模型,并给出实现代码。2)如何对上述通信过程作些修改,以实现广播通信。(程序可参考书上p43p47)实验四 基于netbios会话通信程序设计实验目的掌握如何在netbios接口上建立会话,实现面向连接的可靠通信方式。实验环境操作系统:windows2000/xp编程软件:vc+/turbo c实验内容服务器方:服务器进程使用ncblisten命令侦听客户进程的连接请求,当客户进程的连接请求到来时,响应并建立会话,紧接着向客户方发送一个“welcome to server!”的消息,芮后,服务器进程进入循环接收等待,每收到一个客户进程发来的数据,便将其显示,然后继续等待接收下一个数据。当客户进程拆除会话时,服务器进程随即退出循环,等待下一次的连接请求。客户方:客户进程使用ncbcall命令向指定服务器发出连接请求,会话建立后,紧接着设置接收。当收到服务器发来的“welcome to server”消息后,客户进程进入循环发送状态,用户通过键盘每键入一个字符串,便通过指定的会话链路将该字符串发送到服务器方,然后等待用户发送下一个数据。当用户键入的是“exit”时,客户进程拆除会话,退出循环,结束本次会话。实验步骤resetncb()addname()listen()deletename()resetncb()addname()call()deletename()建立会话连接服务器客户机hangup()recv()send()send()welcome to server!发送用户数据给服务器关闭会话用户输入“exit”hangup() 程序流程图:sendrecv() 编写源程序:(程序可参考书上p49p55) 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。结果记录与分析要求:至少测试三组数据,并做好相关的记录和分析实验五 winsock网络信息查询函数的应用实验目的winsock主要通过三类查询函数(主机信息查询、网络信息查询和套接字地址信息查询)来获取网络信息。通过本实验,要求熟练掌握几个winsock基本函数的使用: winsock初始化函数:wsastartup()和wsacleanup() 字节顺序转换函数:htons()、htonl()和ntohs()、ntohl() 地址转换函数:inet_addr()和inet_ntoa() 主机信息查询函数:gethostbyname()和gethostbyaddr()实验环境操作系统:windows2000/xp编程软件:vc+/turbo c 实验内容编写程序实现如下信息的查询: 已知端口号8080,输出其网络顺序2字节值与主机顺序2字节值; 已知ip地址,输出其网络顺序4字节值; 输入的是ip地址,则由ip地址查询对应的计算机名或网络名; 输入的是计算机名,则由计算机名查询该主机的ip地址;实验步骤1.编写源程序(请在此处给出程序代码):2.形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。3.运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。结果记录与分析(1)查询本机信息: 首先,利用windows自带工具查询本机的计算机名和ip地址,方法如下:l 打开“我的电脑”的“属性”,选择“计算机名”标签可以获取本机的计算机名;l 在命令提示符中键入ipconfig/all可以获取本机的ip地址 并做好记录。本机的计算机名:本机的ip地址: 运行程序,作如下测试:l 键入本机的计算机名,记录屏幕上显示的结果。l 键入本机的ip地址,记录屏幕上显示的结果。 结论:(2)查询同网中其他主机的信息(至少选择三台不同的主机,重复步骤,请做好相关记录): 查询某主机的计算机名和ip地址,方法同上。请记录它的计算机名和ip地址。 运行程序,作如下测试:l 键入计算机名,记录屏幕上显示的结果。l 键入ip地址,记录屏幕上显示的结果。 根据测试的结果,回答下列问题:问题1:(2)中得到的数据与(1)中的一致吗?问题2:除了计算机名和ip地址还可以查询哪些信息,请你写程序实现。(3)错误测试: 运行程序,分别输入错误的(或不存在的、不在同一网络中的)ip地址和计算机名,记录屏幕上显示的信息。你的程序对错误的处理正确吗?实验六 winsock会话通信程序设计(1)实验目的学习如何利用会话套接字实现可靠的面向连接的通信过程。通过本实验,要求熟练掌握几个winsock基本函数的使用: 基本winsock函数:socket()、bind()、listen()、accept()、connect()、shutdown()、closesocket() winsock数据传输函数:send()、recv()实验环境操作系统:windows2000/xp编程软件:vc+/turbo c实验内容 设计一个winsock会话通信程序:服务器端程序在2000端口进行侦听,并进入等待连接状态。客户端尝试与服务器端连接。连接一旦建立,服务器和客户端之间就可以进行通信。客户端提示输入一个数字,比如输入50,那么客户端会从“data0”到“data49”发送50个字符串,输入0退出。 设计一个ftp小程序:服务器端程序在2000端口进行侦听,并进入等待连接状态。客户端尝试和服务器端建立连接。连接一旦建立,就可以在服务器端和客户段之间进行文件传输,程序里要求文件小于32kb。客户端提示输入待传的文件名,该文件名可以带路径,服务器端收到文件后,将其写到相应位置。 注:服务器端使用的端口号为2000,客户端使用的端口号为3000。socket()bind()connect()send()recv()closesocket()socket()bind()listen()accept()侦听套接字连接套接字创建连接套接字recv()send()closesocket()closesocket()服务器实验步骤 程序流程图:客户机 编写源程序:(程序一参考书上8084页,程序二参考书上8591页) 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行结果。结果记录与分析要求:至少测试三组数据,并做好相关的记录和分析思考题假设服务器端程序与客户端程序分别运行在同一个局域网内的两台不同主机上,且已知服务器的主机名为“testserver”,服务器端使用的端口号为2000,客户端使用的端口号为3000,而客户端不知道服务器的ip地址,试问这种情况下,客户端应该如何连接服务器?客户端的程序应该怎样修改?请写出修改部分的代码。实验七 winsock会话通信程序设计(2)实验目的学习如何利用会话套接字实现可靠的面向连接的通信过程。通过本实验,要求熟练winsock会话通信模式,并实现程序设计的灵活开发。实验环境操作系统:windows2000/xp编程软件:vc+/turbo c/.net实验内容改造试验五的程序(任选一),要求如下: 实现通信的双向对话 增加形式多样的窗口或其他界面来显示通信数据,使通信更加直接、容易、可视化 可模拟网络聊天室或ftp工具,设计相关功能或者选择用c#、java等其他语言开发实验步骤 程序流程图(请改造)socket()bind()connect()send()recv()closesocket()socket()bind()listen()accept()侦听套接字连接套接字创建连接套接字recv()send()closesocket()closesocket()服务器客户机 参考程序:(程序一参考书上8084页,程序二参考书上8591页) 设计程序以实现相应功能(请附主要代码) 运行程序,抓图显示运行的效果。结果记录与分析要求:至少测试三组数据,并做好相关的记录和分析,请抓图显示运行的效果。思考题数据双向传输过程,是否出现数据不同步,该问题存在的原因,请查阅有关资料思考解决问题的办法。实验八 winsock多播与广播通信程序设计实验目的学习如何利用套接字实现两种特殊的数据报通信多播和广播。通过本实验,要求掌握以下内容: 使用winsock实现广播通信和多播通信的一般步骤 利用setsockopt()函数设置套接字选项:如何设置套接字的广播属性;如何加入或离开一个多播组。实验环境操作系统:windows2000/xp编程软件:vc+/turbo c实验内容 实现广播通信:发送方的ip地址设为本机地址,在端口3000上进行广播发送,发送50个数据,数据内容分别为data0data49。接收方在端口2000进行数据的接收。 实现ip多播:接收方首先加入一个指定的组“”,发送方只是将数据发给多播组,本身并不接受多播组内成员发送的数据。接收方利用一个循环结构,等待进入的数据。 实验步骤 winsock广播通信的一般步骤: 1)创建广播套接字a) 创建数据报套接字:socket()b) 绑定数据报套接字于指定的地址和端口:bind()c) 通过套接字选项设置数据报套接字的广播属性:setsockopt()2)发送广播消息:sendto()3)接收广播消息:recvfrom() winsock多播通信的一般步骤:1)创建数据报套接字:socket()2)将套接字同本地的一个端口绑定在一起:bind()3)加入到指定的多播组:setsockopt()4)发送数据:sendto()5)接收数据:recvfrom() 编写源程序(代码略):(广播通信的发送端程序参考书上98101页,接收端程序可参考数据报通信程序中的接收程序;ip多播通信程序参考书上104110页) 形成目标程序单击菜单栏的“组建(b)”菜单下的“编译”命令,进行编译。在“输出”窗口的“组建”标签页下查看是否存在编译错误,若有,则进行调试。 运行程序单击菜单栏的“组建(b)”菜单下的“执行”命令,生成.exe文件。必要时,可在过程中设置断点,以便核查相应指令的运行

温馨提示

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

评论

0/150

提交评论