网络课程设计报告

上传人:工**** 文档编号:489925768 上传时间:2023-10-14 格式:DOC 页数:16 大小:660.50KB
返回 下载 相关 举报
网络课程设计报告_第1页
第1页 / 共16页
网络课程设计报告_第2页
第2页 / 共16页
网络课程设计报告_第3页
第3页 / 共16页
网络课程设计报告_第4页
第4页 / 共16页
网络课程设计报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《网络课程设计报告》由会员分享,可在线阅读,更多相关《网络课程设计报告(16页珍藏版)》请在金锄头文库上搜索。

1、计算机网络课程设计-基于TCP的点对点即时通信工具姓名:杨祺鹏For personal use only in study and research; not for commercialuse班级:191072学号: 566指导老师:梁庆中For personal use only in study and research; not for commercialuse一 设计题目及设计目标1. 设计题目For personal use only in study and research; not for commercial use题目:实现一个基于网络的应用要求:利用TCP或UDP完成

2、联网通信,并在此基础上完成数 据应用。2. 设计目标 这个软件实现的功能主要包括局域网内的点对点聊天(基本 功能),局域网内搜索IP并显示,搜索任意IP段并显示。应 用的主要范围面向局域网。二 设计的思路1. 选用语言: C#2. 使用的主要技术: TcpClient,thread(线程)3. 功能结构图。程序流程图:关闭连 接,关闭 数据流1. 获取本机IP模块使用的 C#的 IPHOSTENTRY口 IPADDRES两个类string hostnamel = DnsGetHostName();IPHostEntry myentry = Dns.GetHostByName(hostname1

3、);IPAddress myaddress = new IPAddress (myentry.AddressListO.Address); string myip = myaddress.ToString();=myip;用已经获取的本机的名字来获取本机的IP。2. 获取局域网IPint ipdot = myip.LastlndexOf( .);myip = myip.Substring(0,ipdot+1);string aa =0;/获取本机的IP后,获取最后一个.的位置,并且将这个.后面的数据替换成0和255,实现从局域网0-255的搜索string bb =255;string sta

4、rtip = myip + aa;string endip = myip + bb;=startip;=endip;3. 搜索指定IP段的IP地址对输入的IP段进行搜索,string ipcur =;int ipdot = ipcur.LastlndexOf( .);string ippre = ipcur.Substring(0,ipdot+1);(int i = 0; i = 3;i+ )for在这里 定义搜 索多少 次,因为 搜索很 慢,所以 暂时只 搜索3 次就停 下了 MessageBoxShow(”开始搜索”);string scanip = ippre + i.ToString(

5、);IPAddress myscanip = IPAddress .Parse(scanip); IPHostEntry myscanhost = null ;获取输入IP的最 后一个点的位 置,并且先设置 一个变量为要添 加到这个点后面 的数据。trycanhost =catchifcontinue ;要搜索的IP是搜索框内的IP去 尾得到的,在这里添加上IP的尾 端进行搜索。DnsGetHostByAddress(myscanip);判断是否可以搜索此(myscanhost.HostName != null )MessageBoxShow(”搜索到一个结果”); 可用 IP :);此IP的

6、主机名:);运行截图:IP如果可以通过 IP 搜索到该ip的名 字,则进行添加。4. 在程序启动时同时启动另一个线程作为服务器C/S模式都有服务器和客户端之分,在这个程序中服务器端被简化 了,服务器程序不具有主动的功能,只能对端口进行监听并且修改主进程的控件private void Form1_Load( object sender, EventArgs e)Control .CheckForlllegalCrossThreadCalls =Thread server = new Thread (new ThreadStart server.IsBackground =true ;server

7、.Start();false ;(serverfuntion);在主进程就启动另外 一个服务器 线程privatevoid serverfuntion()dt =DateTime dt = new DateTime(); DateTime.Now;获取当前时间以显示连接成功的时间if ( != null )TcpListener mylis =new TcpListener (IPAddress .Any, 51888);I I7对之前的while(true )tcpli nste ne不得进于商业接受的连接。对任意IP的指定端口进 行监听,无限循环的。TcpCIient mytcp = ne

8、w TcpCIient ();mytcp = myIis.AcceptTcpCIient();/ MessageBox.Show(” 连接建立成功!);Networkstream mystream = mytcp.GetStream();StreamReader sr = new StreamReader (mystream); / MessageBox.Show(” 流建立连接指向IP的51888 端口,连接不成功会 显示不成功。连接成功后对txtbox进 行数据添 加,并且将 发送信息键 置成可使用 的。5. 连接指定IP地址,并且进行数据传输连接指定IPprivate void butt

9、on2_Click( object sender, EventArgs e) IPAddress myip = IPAddress .Parse(;IPAddress toip = IPAddress .Parse(;TcpClient mytcp = new TcpClient ();trymytcp.Connect(toip, 51888);catch ( SocketException )MessageBoxShow(”该 IP不存在! ”);正在连接IP:);if (mytcp.Connected = true )连接成功!”);=true ;mytcp.Close();else连接失

10、败!false ;运行截图:数据传输private void send_Click( object sender, EventArgs e)DateTime dt = new DateTime();dt =DateTime.Now;IPAddressIPAddressmyip = toip =IPAddress .Parse(;IPAddress .Parse(;TcpClientmytcp =因mytctcpclie nt 能获 连接 时间 ip,所 在发 的时 把本 ip myst送候地new TcpClient ();*/MessageBox.Show(” 连接建立!);/数据流建立p.

11、Connect(toip,51888);NetworkStream mystream = mytcp.GetStream();因为发送 信息键是 在连接成 功后才可 用的,因此 不存在连 接失败的 可能。stringstringstringstringmessage1 =;message2 =;message3 = message1 + 本条消息来自于: + message2;message4 =你悄悄的对+ +说:+ message1;发送数据要用特殊格式。byte sendmessage1 =;-eam.Write(sendmessage1,0,sendmessage1.Length);名

12、字,连 不得用于商业用途 发送出去。关闭数据流,关闭连 接。mystream.Close();/ 关闭数据流mytcp.Close();/ 关闭连接;/MessageBox.Show(” 消息发送成功!);运行截图:四.课程设计过程总结1. 程序总结程序实现的功能比较简单,只有搜索IP和点对点聊天,其中搜索IP速度很慢,大概要用3秒左右才能搜索一个IP,暂时还没有解 决这个问题,总体上达到了课程设计的目标,要求的功能基本都 实现了。在后续的功能增强中,会逐步添加群聊还有添加好友的 功能,登录界面也要用数据库进行管理,依靠每个人的数据库数 据有不同的登录界面和好友。2. 遇到的问题和解决过程遇到

13、的问题主要是两个,一个是C/S模式都是要一个客户端一个服务 端,如何让他们在一个程序中实现;一个是对 TCPCLIEN的使用不太 熟悉,之前没有用到过。对于TCPCLIEN的学习是自己找资料还有在 网上看实例学会的,当时和 SOCKET!点弄混了,所以在刚开始的时 候出了点小问题, 随着对 tcpclient 的理解的加深问题就解决了。 另外 一个问题是用线程来解决的,这个方法是参考了网上的高手给的办 法,但是用线程是不能更改主线程的控件的, 还要加上一句类似声明 的代码,这一句代码看似简单, 实际上我找到代码并且测试成功用了 将近一个小时的时间。在发现问题,解决问题的过程中,我的知识储 备也是愈加的丰富, 在和同学们的交流中也学习到了很多知识和很多 很好的想法。在这里对 191072班的刘锦权同学提出特别感谢, 他教给我线程和 事件的使用方法。3. 课程设计感想 通过几天紧张有序的忙碌, 网络课程设计程序终于出炉了。 基于我们 之前对TCP的学习和理解,加上在自己买的资料中进行学习, 在程序 中应用TCP连接还是不太难的。TCP强大的功能和使之实现的简洁的 代码给我留下了很深刻的印

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号