windows 网络程序设计教案Word下载.docx

上传人:b****7 文档编号:22932107 上传时间:2023-02-06 格式:DOCX 页数:64 大小:1.40MB
下载 相关 举报
windows 网络程序设计教案Word下载.docx_第1页
第1页 / 共64页
windows 网络程序设计教案Word下载.docx_第2页
第2页 / 共64页
windows 网络程序设计教案Word下载.docx_第3页
第3页 / 共64页
windows 网络程序设计教案Word下载.docx_第4页
第4页 / 共64页
windows 网络程序设计教案Word下载.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

windows 网络程序设计教案Word下载.docx

《windows 网络程序设计教案Word下载.docx》由会员分享,可在线阅读,更多相关《windows 网络程序设计教案Word下载.docx(64页珍藏版)》请在冰豆网上搜索。

windows 网络程序设计教案Word下载.docx

【教学内容】:

理论课(2课时):

Internet介绍,TCP/IP协议概述(前半部分),SOCKET简介(课件参见“TCP/IP协议概述.ppt”)

上机课(4课时):

上机课练习题目:

“基于Winsock方式的网络聊天室”

练习的主要目的:

理解并掌握基于TCP/IP的Winsock方式网络编程流程和具体方法。

练习方式:

首先编译提供的“基于Winsock方式的网络聊天室”程序。

执行该程序。

第2步,每2或3个人一组,熟悉程序操作,使用、并体会一下。

第3步,分析该程序的结构,比如,程序有那些类,使用的什么基

本技巧。

等等,在了解程序结构的基础上,进行相应的修改。

体修改的内容是:

在聊天室显示窗口中,显示出各个参与聊天者的IP地址。

要求掌握并理解的有关内容:

1C/S结构(Client/Server,“客户端/服务器”结构)的理解。

2初始化Socket的语句:

WSADATAwsaData;

WORDversion=MAKEWORD(2,0);

intret=WSAStartup(version,&

wsaData);

if(ret!

=0)

{

TRACE("

InitilizeError!

\n"

);

//初始化失败

AfxMessageBox("

Failedininitialsocket"

}

3在服务器端建立监听的语句:

if(m_hSocket!

=NULL)

//如果已经创建了套接字先关闭原来的

closesocket(m_hSocket);

m_hSocket=NULL;

if(m_hSocket==NULL)

//创建新的套接字,这里是创建的流类型的套接字

m_hSocket=socket(AF_INET,SOCK_STREAM,0);

ASSERT(m_hSocket!

=NULL);

ServerInit();

m_addr.sin_family=AF_INET;

m_addr.sin_addr.S_un.S_addr=INADDR_ANY;

m_addr.sin_port=htons(m_uPort);

intret=0;

interror=0;

//绑定一个套接字到本机的地址

ret=bind(m_hSocket,(LPSOCKADDR)&

m_addr,sizeof(m_addr));

if(ret==SOCKET_ERROR)

{//绑定错误

BindingError"

returnFALSE;

//开始一个侦听过程,等待客户的连接

ret=listen(m_hSocket,5);

//这里的第二个参数表示最多支持的客户连接数

{//listen失败

ListenError"

4客户端的连接(connect)语句:

ret=connect(m_hSocket,(LPSOCKADDR)&

5链表类的应用:

Clist

6如何建立基于消息机制的异步Socket操作:

if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,FD_READ|

FD_WRITE|FD_CLOSE|FD_CONNECT)>

0)

Errorinselect"

7如何将异步Socket消息机制与程序结合在一起:

●消息定义:

#defineSER_MESSAGEWM_USER+100

#defineCLI_MESSAGEWM_USER+101

●消息映射:

ON_MESSAGE(SER_MESSAGE,OnServerMessage)

ON_MESSAGE(CLI_MESSAGE,OnClientMessage)

●消息函数:

OnClientMessage(WPARAMwParam,LPARAMlParam)

OnServerMessage(WPARAMwParam,LPARAMlParam)

【课堂小结】:

总结一下授课的重点,提请学生们注意所学习的重点和难点。

【作业布置】:

完成课堂上没有结束的程序。

【教学后记】:

基于CSocket方式的网络聊天室

Windows平台的CSocket编程方法

体会CSocket与异步方式实现网络通讯程序的不同

使用VC++编写基于不同实现方法的网络通讯程序

重点是使用VC++编写基本的CSocket通讯程序;

CSocket的理解和使用。

SOCKET详解,TCP/IP协议概述(后半部分)(课件参

“SOCKET.ppt”

“TCPIP协议概述.ppt”)

“基于CSocket方式的网络聊天室”

理解并掌握基于TCP/IP的CSocket方式网络编程流程和具体方法。

首先编译提供的“基于CSocket方式的网络聊天室”程序。

熟悉程序操作,使用、并体会一下与Winsock界面有什么不同(IP地址显示出来了)。

然后,分析该程序的结构,比如,程序有那些类,使用的什么基本

技巧。

等等(由教师详细分析),在了解程序结构的基础上,由

学生自己建立一个新的工程,并对照教师提供的源代码,重写该聊

天室程序。

如果有时间,在聊天室显示窗口中,显示出各个参与聊天者

的名字。

8理解CSocket。

9初始化的语句:

if(AfxSocketInit(NULL)==0)

CSocketInitalError"

10在服务器端建立监听的语句:

11客户端的连接(connect)语句:

12链表类的应用:

Ptrlist

13如何建立基于Archive的Socket操作:

14如何将Archive机制与CSocketFile结合在一起:

15参见课件幻灯片《VC++代码中的一些常用概念.ppt》第16、17页CCocket工作原理。

基于控制台方式的“点对点”简单文件传送

重点是了解阻塞方式的SOCKET编程方法;

阻塞方式的SOCKET的理解和使用,以及流方式的文件打开,读

取,求文件大小(长度)等技巧。

IP协议详解(课件参“IP详解.ppt”)

“一:

基于控制台方式的简单文件传送”

理解并掌握阻塞方式的SOCKET简单的文件传送编程流程和方法。

首先编译教师提供的“基于控制台方式的简单文件传送”程序。

熟悉程序操作,使用、并体会程序的操作。

然后,由教师详细分析程序,在了解程序结构的基础上,由学生自

己建立一个新的工程,并对照教师提供的源代码,重写该程序的代

码。

如果有兴趣,在必要的位置,增加提示信息,如,传输进度等。

一:

基于控制台方式的简单文件传送

1回顾基于控制台方式的Window应用程序开发,并且使用VC++环境创建这类应用。

main(intargc,char*argv[],char*envp[])

{

语句

}

命令行参数的含义(注意:

在VC++环境下,编写“非窗口”的程序,也是经常的。

2了解阻塞方式的SOCKET编程方法

3了解流方式的文件打开,读取,求文件大小(长度)等技巧

4本例程的不足之处:

*之所以称做“简单文件传送”,那么大文件(文件大小超过65535)则无法传送!

(为什么?

*一次只能为一个客户传送文件(为什么?

另外,请同学们思考:

*该文件传送程序,大文件(大小超过65535)则无法传送!

*一次只能为一个客户传送文件(为什么?

基于Windows窗口方式的“点对点”文件传送

Windows平台的异步消息方式的编程方法

体会异步消息方式的的优势

重点是了解基于异步消息方式的SOCKET编程方法;

异步消息方式的SOCKET的理解和使用,以及Windows标准方式文

件的打开,读取,求文件大小(长度)等技巧。

“基于Windows窗口方式的‘点对点’文件传送”

理解并掌握基于Windows窗口方式的文件传送编程流程和

方法。

由教师详细分析程序,在了解程序结构的基础上,学生将

程序改进为可以双向传送文件。

(教师提供的代码是从服

务器端单向传送文件的)

如果有兴趣,在必要的位置,增加提示信息,如,传输进

度等。

一,关键的仍然是如何建立基于消息机制的异步Socket操作:

if(WSAAsyncSelect(m_hSocket,m_hWnd,CLI_MESSAGE,

FD_READ|FD_WRITE|FD_CLOSE|FD_CONNECT)>

二,至于如何将文件发送到对方,教师的方法仅供参考

三,参考下面界面:

*该文件传送程序,与前面介绍的简单文件传送的不同之处

*该程序的不足之处

补充程序,使之完善(增加CLIENT

端传送文件的功能)

实现PING功能

学会如何使用VC++编写网络协议的方法

体会网络协议编程的方式

理解VC++编写的网络通讯协议软件的具体方法

重点是了解如何灵活运用ICMP协议去编制PING应用程序。

实现ICMP协议的技巧。

ICMP协议介绍(课件参“ICMP详解.ppt”)

“实现PING功能”

在编写Ping程序的过程中,学会编写网络协议的技巧,同时理解

ICMP协议,重点是ICMP中的Echo和EchoReply。

教师详细分析程序,然后由同学们单独完成。

按照下面步骤展开。

要求掌握并理解的有关内容以及上机练习一些说明:

16新建项目,使用AppWizard创建一个基于对话框形式的应用程序,首先完成下面工作:

●主机/IP地址输入的编辑框

●按钮,用来开始PING的功能

●一个CHECKBOX控件用来记录PING的路由

●一个用来显示PING结果的编辑框

如下所示:

这些具体的有关VC++基础编程不细说了。

17实现一个封装ICMP-PING功能的类:

classCPing

18理解并掌握对所谓协议的封装是如何实现的:

(重要!

使用结构:

typedefstruct_iphdr

unsignedinth_len:

4;

//Lengthoftheheader注:

此处需要注意!

unsignedintversion:

//VersionofIP

unsignedchartos;

//Typeofservice

unsignedshorttotal_len;

//Totallengthofthepacket

unsignedshortident;

//Uniqueidentifier

unsignedshortfrag_and_flags;

//Flags

unsignedcharttl;

//Timetolive

unsignedcharproto;

//Protocol(TCP,UDPetc)

unsignedshortchecksum;

//IPchecksum

unsignedintsourceIP;

unsignedintdestIP;

}IpHeader;

typedefstruct_icmphdr

BYTEi_type;

BYTEi_code;

//Typesubcode

USHORTi_cksum;

USHORTi_id;

USHORTi_seq;

//Thisisnotthestandardheader,butwereservespacefortime

ULONGtimestamp;

}IcmpHeader;

//

//IPoptionheader-usewithsocketoptionIP_OPTIONS

typedefstruct_ipoptionhdr

unsignedcharcode;

//Optiontype

unsignedcharlen;

//Lengthofoptionhdr

unsignedcharptr;

//Offsetintooptions

unsignedlongaddr[9];

//ListofIPaddrs

}IpOptionHeader;

19Socket的启动:

还记得吗?

WSADATAwsaData;

if(WSAStartup(MAKEWORD(2,2),&

wsaData)!

Sorry,youcannotloadsocketdll!

"

return;

}

20创建Socket的方法(注意与普通的不同“SOCK_RAW”)

m_hSocket=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,

WSA_FLAG_OVERLAPPED);

对比:

m_hSocket=socket(AF_INET,SOCK_STREAM,0);

SOCK_RAW(原始套接字)保存了数据包中的完整IP头,而SOCK_DGRAM、

SOCK_STREAM两种套接字只能收到用户数据。

因此可以通过原始套接字对

数据进行分析。

将原始代码,复制到自己建立的工程中。

*如何实现更高级的ICMP协议功能。

有兴趣的同学,可以编写实现更多功能的ICMP协议。

获取本机网络信息的若干程序

(一)

学会如何使用VC++编写程序获取本机网络信息

通过自己编写的代码,体会如何获取本机网络信息的方法

了解VC++编写的网络通讯软件的某些基础函数

重点是了解如何运用VC++提供的若干与获取本机网络信息相关的

函数。

理解本地网络设置以及相关VC++设计技巧

LAN原理(第一部分)(课件参“LAN原理.ppt”)

题目:

“书签形式的获取本地计算机网络资源程序”

掌握获取本机网络信息的编程方法。

由教师详细分析程序,在了解程序结构的基础上,由

学生自己建立一个新的工程,并对照教师提供的源代码,重写

部分程序的代码。

学会从注册表中获取网络资源,及其编程技巧。

练习

标签页的编程。

教师详细分析程序,然后由同学们单独完成一项新的查询功能。

具体的,由学生在原来基础上添加一个获取DNS的标签页。

●有关VC++基础编程

●标签页的应用及其实现方法。

●理解并掌握如何从注册表中获取资源(重要!

学会两种操作注册表的函数。

值得注意的是:

注册表----注册表结构,不同的操作系统也许不同!

(Win2003,WinNT)

获取本机网络信息的若干程序

(二)

LAN原理(第二部分),TCP协议详解(第一部分)

(课件参“LAN原理.ppt”,“TCP协议.ppt”)

“书签形式的获取本地计算机网络资源程序

(2)”

掌握获取本地网络信息的编程方法。

学会几种获取网络资源的Socket函数:

getservbyname()、getservbyport(),WNetEnumResource()。

及其编程

复习标签页的编程。

了解如何阅读MSDN的帮助(重要!

教师分析程序,然后由同学们单独完成几项新的查询功能。

具体的,首先,由学生在原来基础上添加使用getservbyport

()函数显示协议的的功能。

1、有关VC++基础编程

复习标签页的应用及其实现方法。

2、理解并掌握几种如何获取资源的Socket函数(重要!

学会getservbyname()、getservbyport(),WNetEnumResource()函数。

3、参考资料(有MSDN的同学可以直接阅读):

结构:

SERVENT

structservent{

charFAR*s_name;

charFAR*FAR*s_aliases;

shorts_port;

charFAR*s_proto;

};

Themembersofthisstructureare:

Element

Usage

s_name

Officialnameoftheservice.

s_aliases

ANULL-terminatedarrayofalternatenames.

s_port

Theportnumberatwhichtheservicecanbecontacted.Portnumbersarereturnedinnetworkbyteorder.

s_proto

Thenameoftheprotocoltousewhencontactingtheservice.

函数:

(一)getservbyname()

TheWindowsSocketsgetservbynamefunctionretrievesserviceinformationcorrespondingtoaservicenameand

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1