基于tcp的简单一对一聊天程序设计1

基于tcp的简单一对一聊天程序设计1

ID:14725091

大小:119.50 KB

页数:10页

时间:2018-07-30

基于tcp的简单一对一聊天程序设计1_第1页
基于tcp的简单一对一聊天程序设计1_第2页
基于tcp的简单一对一聊天程序设计1_第3页
基于tcp的简单一对一聊天程序设计1_第4页
基于tcp的简单一对一聊天程序设计1_第5页
资源描述:

《基于tcp的简单一对一聊天程序设计1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于TCP的简单一对一聊天程序设计一、课程设计目的1、通过课程设计,使学生理论联系实际,在实践中进一步了解计算机网络体系结构,深入理解TCP/IP参考模型2、培养学生分析、解决问题的能力,提高学生动手能力。3、使学生掌握搜集资料、调查研究、整理报告的方法。4、初步掌握网络应用程序开发技术以及互联网的应用技术。二、课程设计的要求及原理1、课程设计要求。实现一个一对一的聊天程序。其基本过程如下:服务器首先启动,创建套节字等待客户连接;客户启动以后,创建套届字,然后和服务器建立连接;连接建立以后,客户机和服务器可以通过建立的套节字连接进行通信。服务器和客户端可以是一台电脑上的两个

2、进程,也可以使分别部署在两台电脑上。2、课程设计原理。客户服务器模型。它是指客户/服务器模型是所有网络应用的基础。客户/服务器分别指参与一次通信的两个应用实体,客户方主动地发起通信请求,服务器方被动地等待通信的建立。它是一个在建立分布式应用时最常用的范例。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都

3、有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在"客户进程"和"服务进程"。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的请求作出适当的反应。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。相关协议。应用到的网络协议主要有TCP协议。TCP协议被称作一种端对端协议。这是因为它为两台计算机之间

4、的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收资料以及终止连接。传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。IP协议只保证计算机能发送和接收分组资料,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。三、设计方案首先本程序的定位是一对一的聊天程序;程序没有采用图形界面;程序的设计语言采用的是C++;基于winsock;开发工具为VC++。聊天程序的设计可以采用UD

5、P或者TCP,程序采用TCP。采用的是客户服务器模型。在本程序中,一个用户作为Server端,另一个用户作为Client端。也就是说,作为Server端的用户,需要首先启动程序,等待Client端的连接请求。Client端自动建立连接请求。当TCP连接握手以后,双方方可进行交互。在客户端用户进行消息的编写,发送和接受等功能;而服务器端发送的消息向客户端所有的用户进行发送可以称之为系统消息;服务器端收到某一个用户发送的消息之后可以向所有的其它用户进行转发。连接断开之后,断开服务的客户端将不能够收到服务器转发的消息。程序可在同台机器上或者是不同机器上运行。在用C++语言进行代码

6、的编写时主要应用到的是C++中的网络编程、输入输出处理、多线程以技术。数据的传输使用的是I/O输入输出处理,用到类似cout<<"string";等的输出处理方法。因为服务器是一只提供服务的,也就是说服务器一直是运行的状态,时刻等待着新的客户端提出连接请求,所以就需要使用到多线程的方法。Socket类的实例的accept方法是一个阻塞式的方法,如果只是用进程来表示新的客户端,那么在现有进程没有结束的情况下,新的客户端在发送连接请求之后程序将不能继续向下执行,所以应该应用比进程更小的线程来解决这一问题。四、程序编写1、客户端与服务器端用到的相关类classCIPMessage

7、{public:CIPMessage();~CIPMessage();voidInit(stringsIpAddress,intiPort);intSendMessagePort(stringsMessage);intRecMessagePort();boolIsConnected(){returnm_bIsConnected;}private:boolm_bIsConnected;//true-connectedfalse-notconnectedstringm_sServerIPAddress;intm_iSe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。