重庆理工大学电子学院即时通信软件设计课程设计论文.docx

上传人:b****1 文档编号:615594 上传时间:2022-10-11 格式:DOCX 页数:25 大小:261.90KB
下载 相关 举报
重庆理工大学电子学院即时通信软件设计课程设计论文.docx_第1页
第1页 / 共25页
重庆理工大学电子学院即时通信软件设计课程设计论文.docx_第2页
第2页 / 共25页
重庆理工大学电子学院即时通信软件设计课程设计论文.docx_第3页
第3页 / 共25页
重庆理工大学电子学院即时通信软件设计课程设计论文.docx_第4页
第4页 / 共25页
重庆理工大学电子学院即时通信软件设计课程设计论文.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

重庆理工大学电子学院即时通信软件设计课程设计论文.docx

《重庆理工大学电子学院即时通信软件设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《重庆理工大学电子学院即时通信软件设计课程设计论文.docx(25页珍藏版)》请在冰豆网上搜索。

重庆理工大学电子学院即时通信软件设计课程设计论文.docx

重庆理工大学电子学院即时通信软件设计课程设计论文

目录

前言

一、设计目的……………………………………………………………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实现通信时,服务器端先初始

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1