1、比喻教学法的优势
比喻是一种常用的修辞手法,用跟甲事物有相似之处的乙事物来描写或说明甲事物。而比喻教学法,就是指在实际的授课过程中,选择合适的学生熟悉的事物,将其引申至未知或抽象的事物,从而达到让学生更好的认识新事物的目的[1]。《网络程序设计》理论知识讲解中,运用比喻教学法,用幽默风趣的语言将抽象的事物解释清楚,使得课堂氛围不再沉闷,不仅可以使原本模糊的概念变得清晰,还可以充分调动学生学习的积极性。
2、比喻教学法案例分析
(1)套接字
在《网络程序设计》中,套接字socket是非常重要的概念,教材上的解释是:套接字是两个通信通道上的端节点。看到这个解释,学生还是不能明白套接字的内涵。为了使学生更好地理解,通常采用如下比喻。既然套接字是作为通信的末端,那么可以使用“电话系统”与“邮局系统”这两个同学们熟悉的事物进行类比。可以把支持虚电路服务的信道看作电话线,套接字就类似于一个电话。同样,可以把提供数据报服务的通信看作邮局系统,套接字看作信箱。
(2)基于TCP套接字编程模型
面向连接的网络通信的建立有多个步骤,要使用多个函数。为了便于理解,可以将其比喻为“打电话”这个过程。要建立基于TCP的C-S(客户-服务器)通信,首先双方进程必须各自创建一个端点,也就是调用socket函数创建套接字,正如打电话之前,双方必须都拥有一台电话机一样。Socket是面向模型设计的,针对C-S通信双方提供不同的socket系统调用。客户随机申请一个socket号,这类似想打电话的人可以在任何一台入网的电话上呼叫。服务器拥有全局公认的socket,调用bind函数将套接字地址和所创建的套接字句柄联系起来,任何客户都可以向它发出连接请求和信息请求,这就类似于被呼叫方的电话号码告知了呼叫方。客户端调用connect函数发出连接请求,就好比拨打对方的电话。而服务端有可能在完成当前请求之前又发生多个服务请求,为了很好的处理这个问题,服务器调用listen函数将所有的服务请求放在一个请求队列中排队,并尽快处理这些请求[2],这就如被呼叫方在开启呼叫等待的功能,不错过任何呼叫请求。服务器端执行accept函数等待来自某一客户端的实际连接请求,实现与客户进程连接,这就如被呼叫方拿起电话,双方可以正式通话。最后,客户端与服务端完成数据传输后调用close函数关闭套接字,撤销连接。这就好比打电话双方通话结束后,挂掉电话。
(3)基于UDP的通信机制
用“邮局系统通信”来类比这一种通信机制是非常恰当的。基于UDP通信是面向非连接的,无法保证数据以正确的顺序到达。这就类似我们先后寄出两封信给对方,不能确保第一封信一定会比第二封信先到达对方手上。而在通信过程中,服务端和客户端双方首先都需要绑定IP地址和端口号,这就好比寄信之前,对方的通信地址我们是要已知的。而客户端发送信息以及服务端回应的时候,调用sendto函数来实现,需要指明对方的地址。这如同在寄信的时候,需在信封上要注明对方的地址信息。
(4)协议端口
在讲解“协议端口”时,学生总是不能理解为什么在网络通信的时候要指明端口号,为了解决这个问题,同样采取比喻教学法。大多数操作系统是支持多进程的,目的主机到底把收到的数据包送给哪个进程呢?就好比我们去银行办理业务,银行的业务有多种,有多个服务窗口。我们要成功地办理业务,必须知道对应的窗口号。同理,当你的主机开启多个服务时,如FTP、WWW、E-Mail多个服务,当接收到传送过来的数据包时,主机要准确的把数据包传送给相应的进程,这就需要数据传输的双方进程开启端口,这样数据包将会有标识有源端口,确保接收方顺利地将数据包传送至这个端口。
(5)带外数据
通常数据是按顺序传输的,然而套接字API概念性的提供了一些使用程序,从而可以使得一串数据无阻的先于普通的数据到达接收端。这就是所谓的发送带外数据。这就好比大家排队在银行依次办理业务,有个强盗拿着枪走入银行,越过整个队伍走到柜员面前。这个就可看作为带外数据。这个强盗能越过整个队伍,是因为枪标识他的特殊性,给了他凌驾于众人的权力。
3、结语
网络程序设计课程知识面广、概念抽象难懂,要取得好的教学效果,必须打破传统的教学方法,灵活多变,不断创新。在授课的过程中,大量采取比喻教学法,结果表明,学生更好的掌握知识点,教学效率显著提升。只要认真探索,我们就可以把专业性很强的概念、原理与学生熟悉的事物相类比,使抽象的概念变得生动,易于理解,易于接受[3]。这样学生才会更有兴趣,学习的积极性更高。
作者:谢倩 张莉 刘灵敏 单位: 武汉大学珞珈学院计算机科学系
相关专题:人民币升值的经济影响 建筑工程论文