基于TCP协议网上聊天程序
引言
21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络。而随着计算机技术和通讯技术的迅猛发展,计算机网络已经渗透到各个应用领域,其中最突出的是以TCP/IP协议为核心的Internet网络发展最为迅速。因此,计算机应用程序的开发也由传统单机处理模式,转向为多机通信为主的网络应用开发。
1设计任务
1.1系统目标
综合应用计算机网络理论知识、程序设计语言和网络服务器平台,对目标系统进行分析、设计、实现,最后完成必要的测试。在深入理解计算机网络基本原理的基础上,将书本上抽象的概念与具体的实现技术相结合,体会网络协议的设计与实现的过程,以及专业技术人员所使用的基本方法与技巧。基于TCP协议实现一简单的聊天程序实现网上聊天,包括服务器和客户端。要求:
(1)支持多人聊天
(2)客户端具有图形化用户界面
1.2系统功能
服务器端运行稳定,客户端具有图形化用户界面,且使用简便。服务器端和客户端可以运行在多个系统平台,具有良好的兼容性能。服务器端和客户端功能独立,可以运行在同一台计算机上或不同的计算机上,具有良好的灵活性。
具体功能:
(1)用户注册,用户的密码采用MD5算法就行加密;
(2)用户登录,在密码框中,用户输入的密码显示为“*”;
(3)显示在线用户,用户登录或退出成功,都会刷新在线用户列表;
(4)支持多人聊天,聊天发送的消息:用户名称、发送日期时间和内容。
2系统分析
2.1理论分析
TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理 接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。TCP是面 向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆 BBS, 用的就是 TCP协议;UDP是无连接的,通信双方都不保持对方的状态,浏览器访问Internet时使用的HTT协议就是基于UDP协议的。编程时,编程界面有两种形式:一、由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字(socket)来设计。
2.2客户端/服务器端模式
C/S结构(Client/Server结构)是大家熟知的客户端和服务器端结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的 Web应用发展,Web和 Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
2.3 Socket介绍
Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提出,它定义两台计算机间进行通信的规范(也是一种编程规范,如果说两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。
Socket是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
Socket 系统调用包括创建 Socket、将创建的 Socket 与本地端口绑定、 建立Socket 连接服务器、监听是否有连接、请求数据的可控缓冲发送和可控缓冲接收,到最后关闭 Socket。
服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
图2.3-1 Socket介绍
2.4开发环境
PyCharm
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
3总体设计
3.1体系结构设计
在通信工具中,通常都采用客户端/服务器(C/S)体系结构,即客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理