7聊天室文件传输模块

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文提出并设计了一个局域网聊天系统,并在 WINDOWS 平台上利用 Visual Studio2010 加以实现。本设计将文本聊天和文件传输等功能综合在一个客户端程 序之内,使用 C#语言进行网络编程,并进行了人性化的界面设计,使用起来简 单方便,并且功能十分合理,又易于扩展以及个性化定制。
聊天室实现的基本功能 1.注册账户 2.登陆 3.个人信息管理
关键词:局域网;C/S 体系结构;文本聊天;文件传输
一、聊天系统系统设计的目标与意义
1.设计目标
在当今信息时代,越来越多的聊天系统被应用,聊天网站是聊天软件的基本 雏形,C#语言又是当今流行的网络编程语言,它具有面向对象,与平台无关, 安全,多线程等特点。使用 c#语言不仅可以实现大型企业级的分布式应用系统, 还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世 界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和 继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。
{
Console.WriteLine("{0}",e);
}
private void set()
//创建 set 函数
{
Console.WriteLine("开始发送数据");
byte[] b = new byte[10000000];
//创建文件缓冲区,这里可以认为文件的最大值
FileStreamfile=File.Open(path,FileMode.Open,FileAccess.Read);
[2] 刘骏,颜钢锋.基于 Socket 的网络编程技术及其实现[J]. 江南大学学 报,2004,3(3):249-251.
[3] 仇谷锋.Visual C#.NET 网络编程[M].北京:清华大学出版社,2004,: 78-125.
[4] (美) Harvey M.Deitel.C#大学教程[M].北京:电子工业出版社,2004: 50-60.
[5] 耿肇英,耿燚.C#应用程序教程[M].北京:人民邮电出版社,2007: 45-52.
[6] 孙玉钰.基于 P2P 网络的聊天系统的研发[J].长春大学学报, 2006:61-65.
[7] 张晓.王忠仁.一种基于 CS 和 P2P 混合结构的 IM 系统的设计与实现 [J](4).成都信息工程学院学报,2006:528-531. 刘丽,梁对.即时通信系统的设计与实现[C].通信指挥学院,
4
int n = s.Send(b, end, start, SocketFlags.None);
//用 Socket 的 Send 方法发送流
end += n;
start -= n;
}
file.Close(); //关闭文件流
s.Close();
//关闭 Socket
}
catch (NullReferenceException e)
//获取 Socket 连接
byte[] data = new byte[10000000];
//定义缓冲区
5பைடு நூலகம்
int longer = data.Length;
int start = 0;
int mid = 0;
if (s1.Connected)
//确定连接
{
Console.WriteLine("连接成功");
文件传输接收端工作流程图如图所示。
2
文件传输发送端(左)和接收端(右)程序流程图
private string path = "F:\\SmartMovie.EXE"; //要发送的文件
private Socket s;
private void listen()
{
string ip = "127.0.0.1"; //远程 IP 这里定义为自己的机器
2.设计的意义
此次设计的题目为聊天室,可以巩固所学的 C#语言基础知识,增进 C#语言 的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课 程及相关知识加以融会贯通,全面掌握 C#语言的编程思想及面向对象程序设计 的方法,为今后从事实际工作打下坚实的基础。
二、聊天室要实现的基本功能
并没有实现
private void get()
{
string path = "G:\\da.exe"; //接收的文件
FileStream file = new FileStream(path, FileMode.OpenOrCreate,
FileAccess.Write);
//写入文件流
TcpListener listen = new TcpListener(6789); //监听端口
s=newSocket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);
//初始化 socket
try
{
s.Connect(Conncet);
//连接远程服务器
if (s.Connected)
//如果连接成功 s.Connected 则为 true 否则为 false
Socket s1=newSocket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);
//定义 Socket 并初始化
try
{
listen.Start();
//开始监听
s1 = listen.AcceptSocket();
{
Console.WriteLine("{0}", e);
}
}
这样文件发送的模型就实现了
接下去实现文件的接收,首先要确定对方发送文件的长度,其实上面的
那段还要加入发送文件长度的功能,实现很简单,就是发送 int 变量 end ,然
后要求接收代码返回一个 Boolean 确定是否发送,这里为了更简明的说清楚原理
开启窗体后,接收端执行监听线程。当接收到客户发起的文件传入请求后, 弹出消息提示,提示用户对请求进行处理,同意或者拒绝接收。若同意接收,则 弹出文件保存对话框,用户选择文件保存路径并确认后,发送接收信号给文件发 送端,启动计时器开始接收文件流,将远程文件保存在本地,并在文件传输过程 中对文件传输状态进行反馈,文件接收完毕后,关闭计时器,关闭文件流,并在 状态栏上显示出完毕状态。若拒绝接收,则向发送端返回拒绝信号,继续执行监 听线程,等待下一次的文件传入请求。
//创建文件流
int start = 0;
int end = (int)file.Length;
// 获 取 文 件 长 度 文 件 传 送 如 果 有 需 要 超 过 int 的 范 围 估 计 就 要 改 写
FileStream 类了
try { while (end != 0) { int count = file.Read(b, start, end); //把数据写进流 start += count; end -= count; } while (start != 0) {
聊天室文件传输模块网络 程序编辑 实训报告
摘要:本文提出并设计了一个局域网聊天工具,并在 WINDOWS 平台上利 用 C#编程语言加以实现。本设计将文本聊天和文件传输等功能综合在一个客户 端程序之内,使用 C#语言进行网络编程,并进行了人性化的界面设计,使用起 来简单方便,并且功能十分合理,又易于扩展以及个性化定制。
3
{
Console.WriteLine("连接成功");
Thread t = new Thread(new ThreadStart(set));
//创建进程
t.Start();
//开始进程
Console.WriteLine("发送完毕")
}
}
catch(NullReferenceException e)
mid += count;
longer -= mid;
}
file.Write(data, 0, 1214134);
//写入文件,1214134 为文件大小,可以用 socket 发送获得,代码前面已
经说明。
s1.Close();
file.Close();
}
}
catch(NullReferenceException e)
7
实训成绩评定表
8
1
4.聊天处理 5.查找增加好友管理 6.聊天记录管理
三、聊天室的系统概要
1.首先可以打开登陆界面,并且有可以用于交互的界面,可以用于登陆,注 册;登陆进去之后,可以修改用户的基本信息;登陆进去的用户,可以任意的向 同一网络内的其他用户发送信息!登陆进去的用户可以查询自己的聊天记录,并 且定期删除自己的聊天记录。
{
Console.WriteLine("{0}",e);
}
}
五、总结
在做实验的过程中要清楚的知道程序要实现的功能是什么,然后一步一步实 现,在传输模块中先要实现文件的发送,发送时就要查找文件,找到之后再发送。 然后就是文件的接收,接收后选择保存的位置。到此,此程序的功能就实现了。
6
参考文献
[1] (美)特罗尔森 (Andrew Troelsen).C#与.NET 3.5 高级程序设计(第 4 版)[M].北京:人民邮电出版社,2009:14-72.
2.没有登录的用户可以新的注册,密码错误的用户可以进行邮箱的验证,忘 记密码的用户可以修改自己的密码
3.可以修改自己的密保问题,并且可以自己定义密保问题
4.可以修改发送的字体颜色,并且在信息栏目可以显示自己的用户信息
四、文件传输模块的实现
在实现了文本聊天模块后,另外一个应用是文件的共享。文件共享的实现 离不开文件传输。由于 TCP 协议能保证数据包的准确到达以及各数据包到达的 顺序和数据包发出的顺序相同,出于可靠性和效率考虑,本模块也采用 TCP 协 议来进行用户之间文件的传输。
IPAddress[] ih = Dns.GetHostAddresses(ip);
//获得 IP 列表
IPAddress newip = ih[0];
//获取 IP 地址
int port = 6789;
//定义端口
IPEndPoint Conncet = new IPEndPoint(newip, port); //构造结点
In count = s1.Receive(data, start, longer, SocketFlags.None);
//把接收到的 byte 存入缓冲区
mid += count;
longer -= mid;
while (count != 0)
{
count = s1.Receive(data, mid, longer, SocketFlags.None);
相关文档
最新文档