即时通讯系统的设计与实现毕业设计论文

毕 业 论 文

论文题目:即时通讯系统的设计与实现

开 题 报 告

论文题目: 姓名:_____________ 学号:________________ 学院:___________________

开题报告正文应包含以下几方面的内容: 1.1 论文选题的目的和意义

近年来,随着Internet的飞速发展,计算机网络得到了越来越广泛的应用,并且已经逐步走进千家万户。自迈入信息时代以来,距离已经不再是人们之间联络沟通的障碍,也正因为如此,人们对沟通交流的需求和依赖也越来越强烈,各行各业对信息交流的要求也越来越高。如今,通过各种即时通信软件,人们已经可以在足不出户的情况下,与远距离甚至世界各地的人进行实时的聊天交流,这样的交流不仅满足了人们对交流沟通的需求,同时也给人与人之间的交流带来了极大的便捷和大量的经济节省。因此,即时通信(Instant Messaging)在人们的生活工作和学习中得到了更广泛的应用。

目前,已经有不少即时通信软件在社会公众中流行,像MSN,腾讯QQ,新浪UC等,都是国内人们所熟知的知名流行即时通信软件,其技术方面也都处于国际领先水平。同时,由于即时通信软件的便利,其应用已经由最初的简单的聊天交友得到了巨大的拓展。适应各种场合的各式即时通信软件也开始出现在软件市场上,这就包括了一些与企业管理相关的即时通信软件,一个具有企业自己特色的集信息管理和即时通信为一体的内部应用软件,能够使一个企业或者团队更像一个整体,同时也能够给企业的管理和信息交流带来极大的便利,在一定程度上提高工作效率。

同样的,对于软件设计与开发的行业来说,过去的那种仅适用于PC机上的应用程序的开发已经远远不能满足市场的多样化的需求,网络程序的广泛应用和广大需求使学习与掌握与网络相关的编程技术显得尤为重要。

本论文将结合一个具体的局域网即时通信系统的开发编写,以现有的各种技术,介绍讲解网络IM软件开发中的重要知识,并讨论其中关键环节的技术问题和各种解决方案和设计策略

1.2 相关技术知识简介

1.2.1 基于SOCKET的网络编程

SOCKET在英文中的意思是插座,在网络编程中,其实际意义可以理解为网络通信连接的插座,通常称之为套接字。如果将网络连接的各终端类比为电话,则SOCKET即相当于电话线插座,为各终端提供或者创建与其他终端通信连接的桥梁或通道。所有的终端都必须接通此“插座”来完成与其他终端的连接或通信,否则,它将独立于网络之外。

由此可以知道知道,SOCKET是终端间建立连接的核心对象。那么,对于一个SOCKET对象,它到底具备什么样的功能呢?

通常,用WINSOCK库来创建和使用SOCKET,运用WINSOCK库的基本API,就可以实现简单的数据输入和输出(即发送数据和接受数据)。在创建一个SOCKET对象后,通过指定IP地址来确定该SOCKET与哪台机器发生交流,通过指定机器端口号(一般为1024以上)确定与该机器上哪个应用程序进行交流。在确定了交流对象后,便可以使用SOCKET与对象机器上的应用程序进行数据的传输和信息的交流。在面向连接的网络通信中,还必须使用SOCKET进行连接的监听和创建,只有创建了稳定的连接后,才开始进行数据的传输。

由于交互方式的不同,SOCKET也分为两种,一种是无连接的数据报形式的,一种则是面向连接的流式套接字,这也是接下来两小节要阐述的内容。 1.2.2 UDP协议与TCP协议的简单介绍

UDP协议是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地,其过程可以比做投递信件,它只关心信件确实投放到信箱,至于对方是否正确、按时收到信件,UDP并不关心。

尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁并与之开始对话。

1.2.3 WINSOCK套接字API调用的简单流程

本论文所要讨论的即时通信系统则是通过WINSOCK库的应用来设计和实现基于TCP的C/S结构的网络即时通信程序。这里,用图的方式简单的表示出对WINSOCK库提供的API函数调用过程。

面向连接的流方式调用过程如图1-1所示。

SERVER端

调用WSAStartup()初始化SOCKET 调用socket()创建SOCKET 调用bind()指定通讯端口 调用listen()设置等待连接状态 调用accept()接收连接并生成会话socket 调用accept()接收连接并生成会话socket 调用send和recv进行通讯会话 调用closesocket关闭会话socket 调用send和recv进行通讯会话 调用closesocket关闭会话socket CLIENT端 调用WSAStartup()初始化SOCKET 调用socket()创建SOCKET

图1-1 面向连接的流式通信过程

面向无连接的数据报方式的调用过程如图1-2所示

调用WSAStartup()初始化SOCKET 调用socket()创建SOCKET 调用sendto和recvfrom进行通讯会话 调用closesocket关闭会话socket

图1-2 面向无连接的数据报过程

从图中可以看出,面向连接的流方式更能适应C/S结构系统的非对称结构的实现。

联系客服:779662525#qq.com(#替换为@)