摘要
基于Socket编程的基本原理和开发流程,本文设计并实现了基于单播和组播的多人聊天工具,以及基于组播的视频会议软件。本次Socket网络可视化编程的开发平台为Python + Qt。通过对两款软件的开发,深入理解了Socket编程的过程细节和核心思想。
1 多人聊天工具的开发
1.1 多人聊天工具设计思想
多人聊天工具的关键功能是,当若干人加入同一聊天集合后,任意成员发言,集合中的所有人都能收到。在此,实验基于单播和组播两种不同的方式设计多人聊天工具。在都达到多人聊天目的的前提下,理解单播与组播的共性及各自的优缺点。
1.1.1 基于单播的多人聊天
基于单播的多人聊天可采取两种方式实现:
第一种,每个用户都记录下所有用户的地址,单个用户每次发送聊天消息都必须发送到所有用户地址。显然,每个用户保存所有用户的地址既不利于空间管理、又会引发安全问题。
第二种,采用客户端/服务器的模式,即额外引入一台服务器,每个用户都作为客户端。用户将数据发送给服务器,服务器再转发给其他所有用户。
显然,第二种方案既方便管理,又有助于提升安全性,正是本次多人聊天工具采用的开发方式。并且,为了进一步提高可靠性,实验中采用TCP包传输聊天数据。
1.1.2 基于组播的多人聊天
基于UDP包的组播传输多人聊天数据,即把所有用户加入同一组播组,任一用户的聊天信息数据包都发送到组播地址,这样便能顺利地到达所有加入了该组播组的主机并被用户接收。另外,可以禁止组播回传造成的额外开销。
1.2 多人聊天工具的实现
基于Socket的多人聊天程序流程可