重庆理工大学电子学院即时通信软件设计课程设计论文.docx
- 文档编号:615594
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:25
- 大小:261.90KB
重庆理工大学电子学院即时通信软件设计课程设计论文.docx
《重庆理工大学电子学院即时通信软件设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《重庆理工大学电子学院即时通信软件设计课程设计论文.docx(25页珍藏版)》请在冰豆网上搜索。
重庆理工大学电子学院即时通信软件设计课程设计论文
目录
前言
一、设计目的……………………………………………………………1
二、设计内容……………………………………………………………1
三、设计要求……………………………………………………………1
3.1基本要求…………………………………………………………1
3.2提高要求…………………………………………………………1
四、设计原理……………………………………………………………2
五、软件设计……………………………………………………………5
5.1软件设计思路……………………………………………………6
5.1.1服务器的实现过程…………………………………………7
5.1.2客户端的实现过程…………………………………………7
5.2设计流程图………………………………………………………7
5.2.1服务器流程图………………………………………………7
5.2.2客户端流程图………………………………………………8
六、调试过程……………………………………………………………9
七、实验结果分析………………………………………………………11
八、体会和建议…………………………………………………………13
参考文献…………………………………………………………………14
附录一:
服务器端主要源程序清单…………………………………15
附录二:
客户端主要源程序清单……………………………………21
摘要:
用VC++设计的即时聊天通讯的工具,主要采用client/server结构,并用winsock写实现服务器监听、客户端发送请求信息。
服务器端主要完成监听和接收用户的连接请求,以及管理用户之间的通信和用户的状态,比如登陆和退出聊天室。
服务器端在启动时先建立一个SOCKET用以监听客户端的连接请求,由客户连接时新建一个SOCKET来进行与用户之间的数据传输,客户退出聊天室时释放该用户占有的SOCKET。
客户端主要是客户之间用来法聊天的,客户端启动后首先建立一个SOCKET根据客户输入的服务器的地址和用户名,向服务器发出连接请求,连接成功后就可以用同一个SOCKET用作数据传输,退出聊天室时关闭该SOCKET。
一、设计目的
通过综合课程设计,使学生能够运用《数字信号处理》、《信号与系统》、《通信原理》、《面向对象的程序设计》、《计算机通信网》、《通信协议开发及应用》等课程的知识来设计一个基于Socket的即时通讯系统,培养学生的动手能力以及分析问题、解决问题的能力。
二、设计内容
利用vc++/delphi6.0为开发环境的前台开发工具,基于socket接口编程实现服务器与客户端之间的即时通信。
并能够编制友好的对话界面,有能力的还可以实现文件、图片的传输,语音的对话等等。
三、设计要求
基本要求
1、熟练掌握面向对象的程序设计方法;
2、实现点对点通讯,能进行文字对话传输,包括客户端与服务器端;
3、能对系统参数进行配置。
提高要求
1、实现文件、图片传输;
2、语音对话(两人及两人以上);
3、友好的对话界面。
四、设计原理
1:
TCP/IP简介
TCP/IP的历史要追溯到70年代中期,当时ARPA为了实现异种网之间的互连(interconnection)与互通(intercommunication),大力资助网间网技术的研究和开发,于1977年到1979年推出目前形式的TCP/IP体系结构和协议规范。
到今天,TCP/IP技术以及Internet网间网已经为广大计算机工作者。
机算机厂商和机算机用户所接受.据统计,到1990年,Internet以包含遍布欧美的五千个活动网络,超过三十万台机算机。
作为一种事实上的工标准,TCP/IP技术方兴未艾。
2:
TCP/IP的网络分层结构
对TCP/IP协议来说,TCP提供传输层服务,IP提供网络层服务。
TCP/IP协议组(或Internet协议组)的分层结构及其与OSI模型的对应关系如图4所示。
图中有关协议的名称及其基本含义如下:
(1).TCP为传输控制协议(TransmissionControlProtocol)。
它是提供给用户进程的一个可靠的全双工字节流的面向连接的协议。
大多数Internet应用程序使用TCP.因为TCP使用IP,所以整个Internet协议组也常称为TCP/IP协议组。
(2).TCP为传输控制协议(TransmissionControlProtocol)。
它是提供给用户进程的一个可靠的全双工字节流的面向连接的协议。
大多数Internet应用程序使用TCP.。
因为TCP使用IP,所以整个
(3).Internet协议组也常称为TCP/IP协议组。
(4).ICMP为网间报文控制协议(InternetControlMessageProtocol)。
(5).IP:
网间协议(InternetProtocol).IP协议时为了TCP,UDP和ICMP提供分组发送服务协议。
(6).ARP:
地址转换协议。
(7).RARP:
反向地址转换协议
3:
socket原理
Socket编程界面由4BSDUNIX首先提出,目的是解决网间网进程通信问题。
Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信,而且支持网络通信功能。
Socket具有类型,反应了对用户透明的通信特性。
微软的WindowsSocket规范对Berkley的套接字规范进行了扩展,利用标准的Socket的方法,可以同任何平台上的Socket进行通信;利用其扩展,可以更有效地实现在Windows平台上计算机间的通信。
在Delphi中,其底层的Socket减轻了编写计算机间通信软件的难度;Delphi中对WindowsSocket进行了有效的封装,使得用户可以很方便地编写网络通信程序。
Socket通信在Windows中是排队的形式由操作系统处理,而且接收方和发送方相互协同工作,否则就会造成数据丢失。
因此,不能用类似于for语句的循环来实现对多组数据的放松,更不能用循环语句来接受数据。
另外,和所有的通信编程一样,Socket编程也遵循数据分包传送这一基本规则。
也就是说,在socket编程中,每次发送和接受一个包,以保证数据传输的安全性和稳定性,同时也不至于过多地占用系统资源。
Socket编程界面由4BSDUNIX首先提出,目的是解决网间网进程通信问题.Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信,而且支持网络通信功能.Socket具有类型,反应了对用户透明的通信特性.
一个完整的Socket连接用一个相关描述:
{协议,本地地址,本地端口,远地地址,远地端口}
Socket是面向客户-服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用.
不管Socket内部机制如何,它提供给应用程序员的最终界面是一组系统功能调用.下面,我们一一给出重要的Socket系统调用.
(1).创建Socket-----socket()
调用格式如下:
sockid=socket(af,type,protocol)
af:
地址族,指本socket所用地址类型.
type:
类型,指创建socket的应用程序所希望的通信服务器类型.
protocol:
协议,指本socket请求的协议.
(2).指定本地地址----bind()调用
bind()将本地socket地址与所创建的socket联系起来,即将本socket地址赋予socket,以指定本地半相关.bind()的作用相当于给socket命名,调用格式为:
bind(sockid,localaddr,addrlen)
sockid:
socket号.
localaddr:
本地socket地址.
addrlen:
地址长度.
(3).建立socket连接----connect()与accept()调用
这两个系统调用用于完成整个相关的建立.其中connect用于建立连接.调用格为:
connect(sockid,destaddr,addrlen)
destaddr:
指向对方socket地址(信宿地址)结构的指针.
accept:
用于面向连接的服务器,其调用格式为:
newsock=accept(sockid,clientaddr,paddrlen)
clientaddr:
指向客户socket地址指针.
paddrlen:
客户socket地址长度.
(4).listen()调用
此调用用于面向连接服务器,表明它愿意接收连接,listen()在accept()之前调用,格式为:
listen(sockid,quelen)
quelen:
请求队列长度.
(5).发送数据----write(),writev(),send()与sendto(),sendmsg()
用于socket数据发送的系统调用一共有五个,其中三个,write(),writev()和send()用于面向连接传输,其余两个用于无连接传输.面向连接的调用可以不指定信宿地址,而无连接的调用必须指定.假如无连接socket的双方均调用过connect(),可以认为是建立有连接的socket,也可以面向连接调用发送数据.
三个面向连接调用三者的格式大致相同:
write(sockid,buff,bufflen):
缓冲发送
writev(sockid,iovector,vectorlen):
集中发送
send(sockid,buff,bufflen,flags):
可控缓冲发送
其中buff指向发送缓冲区的指针,bufflen是发送缓冲区大小.
用于无连接数据发送的调用有两个:
sendto(sockid,buff,bufflen,flags,dsadd,addrlen)
sendmsg(sockid,message,flags):
可控集中无连接发送.
(6).接收数据----read(),readv(),recv()与recvfrom(),recvmsg()
接收数据与发送数据系统调用是一一对应的,两者参数的最大区别是,前者buffer是一个指针,其所指单元初值为欲读数据长度,调用后的值是实际读出的值.
4:
服务器socket地址的确定
在客户--服务器模型中,所有的作用者都是客户首先发起的(如连接请求,服务请求等),因此客户必须要知道服务器socket地址,另外,客户调用服务器之前,可以在命令行中给出服务器所在主机的域名,根据域名可以获得服务器主机的地址,系统调用为:
hp=gethostbyname(host)。
其中host可以是服务器主机域名,返回hp是一个指向主机地址结构的指针。
五、软件设计
在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式,即客户向服务器发出服务请求,服务器接受到请求后,提供相应的服务。
在该系统中没有采用简单的点对点通信来实现,而采用了比较典型的客户/服务器模式,因为网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不分享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就需要借助服务器模式来实现这一功能。
Socket实现通信时,服务器端先初始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆 理工大学 电子 学院 即时 通信 软件设计 课程设计 论文