基于TCP的局域网视频聊天程序课程设计.doc
文本预览下载声明
《网络程序设计》课程设计报告
题 目:
专 业:
学 号:
姓 名:
完成日期:
成 绩:
题目及要求
基本要求
本课程设计的基本要求是在校园网范围内能进行视频聊天,文字聊天,文件传输。
功能详细描述
视频聊天:在局域网范围内通过TCP协议实现客户端与客户端之间视频的传输,客户端能够看到服务端的视频,服务端也能够看到客户端的视频。
文字聊天:客户端和服务端之间在进行视频的同时也能够进行简单的文字聊天。
文件传输:客户端和服务端之间可以在建立连接之后在任意时间进行文件传输。在文件传输的同时可以进行文字聊天和视频传输的功能。
可能出现的难点
系统开发的重难点在于视频画面的捕捉并传输、文件的传输,因此系统的重难点是视频的传输和文件的传输。
系统概要设计
系统开发用到了三大基本技术,分别为文字聊天、文件传输技术和视频处理技术,由于整个过程是基于TCP协议,首先介绍TCP协议的建立过程,如图2-1
1.文字聊天的基本原理
系统分为客户端和服务端,严格上说客户端在某些时刻也作为服务端使用,服务端在某些时刻也作为服务端使用。服务端首先启动开始监听消息传输时使用的端口,当客户端启动时,主动连接服务端。连接完成之后客户端与服务端建立套接字连接,在此之后两者之间便可以对等的进行文字聊天。原理图如下所示:
2.文件传输技术
文件传输中使用了文件流和TCP套接字来传输,主要过程如下:
① 客户端和服务端建立连接
建立的过程和文字聊天建立的连接过程是相同的。
② 发送端向接收端发送要接受文件的文件名
③ 发送端从文件中读取到缓冲区并发送给客户端
客户端和服务端的用于发送和接受的缓冲区的大小是相同的,为了实现两个的大小相同可在输出文件之前由发送方告诉接受方本次输出所用的缓冲区的大小。每次发送之前应将剩余文件的大小与缓冲区的大小做比较,当剩余文件的大小小于缓冲区的大小时,调整缓冲区的大小同剩余文件相同,将剩余的文件发送到接收端。
④ 关闭文件流
3.视频传输技术
视频的传输过程利用了avicap32.dll和user32.dll完成摄像头的视频采集。avicap32.dll和user32.dll是Window API 应用程序接口的相关模块。avicap32.dll接口可以方便地对摄像头和其他视频硬件进行API电影和视频的截取。
主要过程如下所示:(将发起视频的称为客户端)
① 客户端和服务端建立连接
建立的过程和文字聊天建立的连接过程是相同的。
② 客户端发起视频连接的请求
③ 客户端打开本地摄像头,每隔10ms向服务端发送采集到的图片,同时接受服务端发送过来的图片
④ 服务端打开本地的摄像头,同时接受客户端发送过来的图片和向客户端发送图片
⑤ 关闭视频传输
流程图如下所示:
系统详细设计
客户机与服务机之间的通信过程如下所示
由上图可知主要的函数为字节数组发送函数、字节数组接收函数、消息发送函数、消息接收函数、文件发送函数、文件接收函数、视频发送函数、视频接收函数。详细介绍如下所示:
1.字节数组发送函数SendVarData
public static int SendVarData(Socket s, byte[] data)
{
//函数返回的是发送字节数组的大小
int total = 0;
int size = data.Length;//发送数组的大小
int dataleft = size;
int sent;
byte[] datasize = new byte[4];
datasize = BitConverter.GetBytes(size);
sent = s.Send(datasize);//首先发送字节数组的大小
while (total size)
{//循环发送字节数组的主体
sent = s.Send(data, total, dataleft, SocketFlags.None);
total += sen
显示全部