- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络课程设计
---基于TCP的点对点即时通信工具
姓名:杨祺鹏
班级:191072
学号:20071000566
指导老师:梁庆中
设计题目及设计目标
设计题目.1
题目:实现一个基于网络的应用
要求:利用TCP或UDP完成联网通信,并在此基础上完成 数据应用。
设计目标.2
这个软件实现的功能主要包括局域网内的点对点聊天 <基本
功能),局域网内搜索 IP并显示,搜索任意IP段并显示。
应用的主要范围面向局域网。
设计的思路
选用语言:C#
使用的主要技术: TcpClient,thread(线程>
功能结构图。
设计的实现
程序流程图:
1.获取本机IP模块
使用的 C#的 IPHOSTENTRY口 IPADDRES两个类
string hostnamel = DnsGetHostName(。
IPHostEntry myentry = Dns.GetHostByName(hostname1。
IPAddress myaddress = newIPAddress (myentry.AddressList[O].Address 。 string myip = myaddress.ToString( 。
this」ocalip.Text = myip 。
用已经获取的本机的名字来获取本机的IP。
2.获取局域网IP
int ipdot = myip.LastlndexOf( . 。
myip = myip.Substring(0,ipdot+1 。
string aa = 0。//获取本机的IP后,获取最后一个.的位置,并且将这个.后面的数据替换成0和
255,实现从局域网0-255的搜索
string bb = 255。
string startip = myip + aa 。
string endip = myip + bb 。
this .ipstart.Text = startip 。
this .ipend.Text = endip 。
3.搜索指定IP段的IP地址
对输入的IP段进行搜索,
获取输入IP的 最后一个点的位 置,并且先设置 一个变量为要添 加到这个点后面 的数据。string ipcur = this .ipstart.Text 。 int ipdot = ipcur.LastlndexOf( .
获取输入IP的 最后一个点的位 置,并且先设置 一个变量为要添 加到这个点后面 的数据。
string ippre = ipcur.Substring(0,ipdot+1
for ( int i = 0 。 i = 3 。i++
{
MessageBoShow(开始搜索。
stri n在5这^里=
Ad定es义 I搜sca nip = FHogB多y 少my
次
为
很
所
时
catchy
try
co
ppre + i.ToString( 。
IPAddress .Parse(scanip
scanhost = null 。
要搜索的IP是搜索框内的IP去 尾得到的,在这里添加上 IP的 尾端进行搜索。
I 乂 ?
以 myscanhost =
只搜
3次
停下
了e。
就
nti
DnsGetHostByAddress(myscanip 。
判断是否可以搜索此
IP
如果可以通过
如果可以通过 IP 搜索到该ip的名 字,则进行添 加。
}
if (myscanhost.HostName != null
{
MessageBoxShow(搜索到一个结果。 this .ipbox.ltems.Add( 可用 IP : 。 this .ipbox」tems.Add(scanip 。
this .ipbox.ltems.Add( 此 IP 的主机名: this .ipbox.ltems.Add(myscanhost.HostName
}
运行截图:
4.在程序启动时同时启动另一个线程作为服务器
C/S模式都有服务器和客户端之分,在这个程序中服务器端被简 化了,服务器程序不具有主动的功能,只能对端口进行监听并且
修改主进程的控件
privatevoid Form1_Load( object sender, EventArgs e
{
Cont⑹.CheckForlllegalCrossThreadCalls = false。
Thread server = neWThread (newThreadStart (serverfuntion
server.lsBackground =
true
在主进程
LOAD的时
候就启动另 外一个服务 器线程
server.Start( 。
}
privatevoid serverfuntion(
获取当前时间以 显示连接成功的时间{
获取当前时间以 显
示连
您可能关注的文档
最近下载
- 创伤弧菌脓毒症临床诊治急诊专家共识(2025)解读PPT课件.pptx VIP
- smc-9021cems烟气分析系统说明书ii_11_30.doc VIP
- 2022新高考II卷语文试题及答案.docx VIP
- 小学课间活动对小学生团队合作精神培养的实证研究与实践报告教学研究课题报告.docx
- 浙江大学《园艺植物栽培学》习题库及期末考试真题解析(名词解释、填空、选择、改错、简答、论述题).pdf VIP
- 信息管理学基础7信息服务.pptx VIP
- 英文疾病诊断书模板.docx VIP
- 风力发电企业安全设施配置标准_图文.pdf VIP
- 电力人工智能技术研究框架、应用现状及展望.pptx VIP
- CEMS-9021烟气在线检测系统送电及调试步骤(中英文对照).docx VIP
原创力文档


文档评论(0)