网络课程设计报告点对点聊天软件的实现Word文档格式.docx

上传人:b****1 文档编号:14705748 上传时间:2022-10-24 格式:DOCX 页数:20 大小:338.97KB
下载 相关 举报
网络课程设计报告点对点聊天软件的实现Word文档格式.docx_第1页
第1页 / 共20页
网络课程设计报告点对点聊天软件的实现Word文档格式.docx_第2页
第2页 / 共20页
网络课程设计报告点对点聊天软件的实现Word文档格式.docx_第3页
第3页 / 共20页
网络课程设计报告点对点聊天软件的实现Word文档格式.docx_第4页
第4页 / 共20页
网络课程设计报告点对点聊天软件的实现Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

网络课程设计报告点对点聊天软件的实现Word文档格式.docx

《网络课程设计报告点对点聊天软件的实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《网络课程设计报告点对点聊天软件的实现Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

网络课程设计报告点对点聊天软件的实现Word文档格式.docx

利用TCP或UDP完成联网通信,并在此基础上完成数据应用。

2.设计目标

这个软件实现的功能主要包括局域网内的点对点聊天(基本功能),局域网内搜索IP并显示,搜索任意IP段并显示。

应用的主要范围面向局域网。

二.设计的思路

1.选用语言:

C#

2.使用的主要技术:

TcpClient,thread(线程)

3.功能结构图。

三.设计的实现

程序流程图:

连接不成功

不为空

为空

连接成功

继续聊天

程序结束

1.获取本机IP模块

使用的C#的IPHOSTENTRY和IPADDRESS两个类

stringhostname1=Dns.GetHostName();

IPHostEntrymyentry=Dns.GetHostByName(hostname1);

IPAddressmyaddress=newIPAddress(myentry.AddressList[0].Address);

stringmyip=myaddress.ToString();

=myip;

用已经获取的本机的名字来获取本机的IP。

2.获取局域网IP

intipdot=myip.LastIndexOf('

.'

);

myip=myip.Substring(0,ipdot+1);

stringaa="

0"

;

//获取本机的IP后,获取最后一个.的位置,并且将这个.后面的数据替换成0和255,实现从局域网0-255的搜索

stringbb="

255"

stringstartip=myip+aa;

stringendip=myip+bb;

=startip;

=endip;

3.搜索指定IP段的IP地址

对输入的IP段进行搜索,

stringipcur=;

intipdot=ipcur.LastIndexOf('

stringippre=ipcur.Substring(0,ipdot+1);

for(inti=0;

i<

=3;

i++)

{

MessageBox.Show("

开始搜索"

stringscanip=ippre+i.ToString();

IPAddressmyscanip=IPAddress.Parse(scanip);

IPHostEntrymyscanhost=null;

try

{

myscanhost=Dns.GetHostByAddress(myscanip);

}

catch

continue;

}

if(myscanhost.HostName!

=null)

搜索到一个结果"

"

可用IP:

"

;

此IP的主机名:

运行截图:

4.在程序启动时同时启动另一个线程作为服务器

C/S模式都有服务器和客户端之分,在这个程序中服务器端被简化了,服务器程序不具有主动的功能,只能对端口进行监听并且修改主进程的控件。

privatevoidForm1_Load(objectsender,EventArgse)

Control.CheckForIllegalCrossThreadCalls=false;

Threadserver=newThread(newThreadStart(serverfuntion));

server.IsBackground=true;

server.Start();

privatevoidserverfuntion()

DateTimedt=newDateTime();

dt=DateTime.Now;

if(!

TcpListenermylis=newTcpListener(IPAddress.Any,51888);

mylis.Start();

while(true)

TcpClientmytcp=newTcpClient();

mytcp=mylis.AcceptTcpClient();

//MessageBox.Show("

连接建立成功!

NetworkStreammystream=mytcp.GetStream();

StreamReadersr=newStreamReader(mystream);

//MessageBox.Show("

流建立成功!

stringreceived="

received=sr.ReadToEnd();

消息接受成功!

if(received!

}//MessageBox.Show("

文本框修改成功!

sr.Close();

mystream.Close();

mytcp.Close();

//MessageBox.Show("

流关闭,连接关闭!

}

5.连接指定IP地址,并且进行数据传输

连接指定IP

privatevoidbutton2_Click(objectsender,EventArgse)

IPAddressmyip=IPAddress.Parse(;

IPAddresstoip=IPAddress.Parse(;

mytcp.Connect(toip,51888);

catch(SocketException)

该IP不存在!

正在连接IP:

if(mytcp.Connected==true)

连接成功!

=true;

else

连接失败!

=false;

运行截图:

数据传输

privatevoidsend_Click(objectsender,EventArgse)

mytcp.Connect(toip,51888);

连接建立!

//数据流建立

stringmessage1=;

stringmessage2=;

stringmessage3=message1+"

本条消息来自于:

+message2;

stringmessage4="

你悄悄的对"

++"

说:

+message1;

byte[]sendmessage1=;

mystream.Write(sendmessage1,0,sendmessage1.Length);

//关闭数据流

//关闭连接

消息发送成功!

四.课程设计过程总结

1.程序总结

程序实现的功能比较简单,只有搜索IP和点对点聊天,其中搜索IP速度很慢,大概要用3秒左右才能搜索一个IP,暂时还没有解决这个问题,总体上达到了课程设计的目标,要求的功能基本都实现了。

在后续的功能增强中,会逐步添加群聊还有添加好友的功能,登录界面也要用数据库进行管理,依靠每个人的数据库数据有不同的登录界面和好友。

2.遇到的问题和解决过程

遇到的问题主要是两个,一个是C/S模式都是要一个客户端一个服务端,如何让他们在一个程序中实现;

一个是对TCPCLIENT的使用不太熟悉,之前没有用到过。

对于TCPCLIENT的学习是自己找资料还有在网上看实例学会的,当时和SOCKET有点弄混了,所以在刚开始的时候出了点小问题,随着对tcpclient的理解的加深问题就解决了。

另外一个问题是用线程来解决的,这个方法是参考了网上的高手给的办法,但是用线程是不能更改主线程的控件的,还要加上一句类似声明的代码,这一句代码看似简单,实际上我找到代码并且测试成功用了将近一个小时的时间。

在发现问题,解决问题的过程中,我的知识储备也是愈加的丰富,在和同学们的交流中也学习到了很多知识和很多很好的想法。

在这里对191072班的刘锦权同学提出特别感谢,他教给我线程和事件的使用方法。

3.课程设计感想

通过几天紧张有序的忙碌,网络课程设计程序终于出炉了。

基于我们之前对TCP的学习和理解,加上在自己买的资料中进行学习,在程序中应用TCP连接还是不太难的。

TCP强大的功能和使之实现的简洁的代码给我留下了很深刻的印象,在以后的学习生活中还要进一步进行学习。

这一次网络课程设计深化了我对TCP的理解,也对经常要使用的C/S模式有了一定的了解,锻炼了C++的编程动手能力,有很强的成就感。

TCP作为连接控件应用非常广泛,前景非常好,我会以这次课程设计为契机,进一步对TCP知识进行学习和发掘。

对我而言,知识上的收获重要,精神上的丰收更加可喜。

让我知道了学无止境的道理,这次课程设计必将成为我人生旅途上一个非常美好的回忆!

五.附录

日志:

第一天:

题目解读,基本思路。

通过对课设题目的理解,用c#来做界面会好看一些,控件比较好用,tcp连接来做网络的连接和数据传输,这个程序使用的是传统的C/S模式,所以要写两个程序,服务端不断扫描端口,客户端连接并传输,争取可以用一个程序来完成两个程序的任务。

今天主要写了获取本机ip和扫描指定区域ip。

第二天:

写基本功能。

学习tcpclient的一系列操作后,写出网络连接和数据流,主要实现连接和对单人数据传输。

第三天:

测试连接,写界面,增加其他的功能。

测试连接可以正常传输信息,主要功能已经实现了,把连接的IP写到界面上变成可更改的数据,在界面上添加控件显示连接信息和聊天信息,搜索IP后对控件数据进行

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

当前位置:首页 > 考试认证 > 其它考试

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

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