文档介绍:计算机网络课程设计
---基于TCP的点对点即时通信工具
设计题目及设计目标
设计题目
题目:实现一个基于网络的应用
要求:利用TCP或UDP完成联网通信,并在此基础上完成数据应用。
设计目标
这个软件实现的功能主要包括局域网内的点对点聊天(基本功能),局域网内搜索IP并显示,搜索任意IP段并显示。应用的主要范围面向局域网。
设计的思路
:C#
:TcpClient,thread(线程)
。
另一个线程启动(服务器)
程序启动(客户)
修改主进程控件
向指定IP发送消息
搜索指定IP段
获取本机IP
监听端口
设计的实现
程序初始化
程序流程图:
服务器线程启动
搜索指定段IP,或者搜索本地局域网IP
对指定端口进行监听
连接IP
监听IP传输数据是否为空
连接不成功
不为空
为空
连接成功
发送数据
修改主进程控件
关闭连接,关闭数据流
关闭连接,关闭数据流
用户选择
继续聊天
程序结束
程序结束
获取本机IP模块
使用的C#的IPHOSTENTRY和IPADDRESS两个类
string hostname1 = ();
IPHostEntry myentry = (hostname1);
IPAddress myaddress = new IPAddress([0].Address);
string myip = ();
= myip;
用已经获取的本机的名字来获取本机的IP。
获取局域网IP
int ipdot = ('.');
myip = (0,ipdot+1);
string aa = "0";//获取本机的IP后,,,实现从局域网0-255的搜索
string bb = "255";
string startip = myip + aa;
string endip = myip + bb;
= startip;
= endip;
搜索指定IP段的IP地址
对输入的IP段进行搜索,
string ipcur = ;
获取输入IP的最后一个点的位置,并且先设置一个变量为要添加到这个点后面的数据。
int ipdot = ('.');
string ippre = (0,ipdot+1);
for (int i = 0; i <= 3;i++ )
{
("开始搜索");
在这里定义搜索多少次,因为搜索很慢,所以暂时只搜索3次就停下了
string scanip = ippre + ();
IPAddress myscanip = (scanip);
要搜索的IP是搜索框内的IP去尾得到的,在这里添加上IP的尾端进行搜索。
IPHostEntry myscanhost = null;
try
{
myscanhost = (myscanip);
}
catch
判断是否可以搜索此IP
{
continue;
}
if ( != null)
{
("搜索到一个结果");
如果可以通过IP搜索到该ip的名字,则进行添加。
("可用IP:");
(scanip);
("此IP的主机名:");
();
}
运行截图:
在程序启动时同时启动另一个线程作为服务器
C/S模式都有服务器和客户端之分,在这个程序中服务器端被简化了,服务器程序不具有主动的功能,只能对端口进行监听并且修改主进程的控件。
private void Form1_Load(object sender,