在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 虚拟路由助手、虚拟wifi 源码下载

C# 虚拟路由助手、虚拟wifi 源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.11M
  • 下载次数:28
  • 浏览次数:593
  • 发布时间:2015-05-31
  • 实例类别:C#语言基础
  • 发 布 人:crazycode
  • 文件格式:.rar
  • 所需积分:2
 相关标签: C# wifi

实例介绍

【实例简介】

【实例截图】

【核心代码】

using Microsoft.VisualBasic;
using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using VirtualRouter.Extensions;
using VirtualRouter.ICS;
using VirtualRouter.Properties;
using VirtualRouter.WinApi;
using VirtualRouter.Wlan;

namespace VirtualRouter.Client
{
	public partial class FrmMain : Form
	{
		static Regex RegexIP = new Regex(@"^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$", RegexOptions.Compiled);

		private WlanManager _wlnMgr;
		private IcsManager _icsMgr;
		private FrmSharingManager _frmSharing;
		public FrmMain()
		{
			InitializeComponent();

			dgvClients.AutoGenerateColumns = false;

			_wlnMgr = new WlanManager();
			_icsMgr = new IcsManager();
			_frmSharing = new FrmSharingManager();

			//监听虚拟路由状态的改变
			_wlnMgr.StationJoin  = StationChanged;
			_wlnMgr.StationJoin  = (_s, _e) => {
				ntfyDock.ShowBalloonTip(500, "", "发现客户端加入连接", ToolTipIcon.Info);
			};
			_wlnMgr.StationLeave  = StationChanged;
			_wlnMgr.StationStateChange  = StationChanged;
			_wlnMgr.HostedNetworkStarted  = HostedNetworkStateChanged;
			_wlnMgr.HostedNetworkStarted  = StationChanged;
			_wlnMgr.HostedNetworkStopped  = HostedNetworkStateChanged;
			_wlnMgr.HostedNetworkStopped  = StationChanged;
		}
		private void RefreshConnections()
		{
			var cons = _icsMgr.Connections.Where(_ => !_.IsMatch(_wlnMgr.HostedNetworkInterfaceGuid)).ToList();
			cmbSharings.DataSource = cons;
			cmbSharings.AdjustDropDownWidth();
			cmbSharings.SelectedItem = cons.FirstOrDefault(_ => _.SharingEnabled);
		}
		private void HostedNetworkStateChanged(object sender, EventArgs e)
		{
			this.Invoke(new Action(() => {
				var captions = ((string)btnSwitch.Tag).Split('|');
				if (_wlnMgr.IsHostedNetworkStarted) {
					btnSwitch.Text = captions[1];
					ntfyDock.Icon = Resources.VirtualRouterEnabled;
					ntfyDock.ShowBalloonTip(500, "", "虚拟路由已开启", ToolTipIcon.Info);
				} else {
					btnSwitch.Text = captions[0];
					ntfyDock.Icon = Resources.VirtualRouterDisabled;
					ntfyDock.ShowBalloonTip(500, "", "虚拟路由已停止", ToolTipIcon.Info);
				}
				StartToolStripMenuItem.Visible = !(StopToolStripMenuItem.Visible = _wlnMgr.IsHostedNetworkStarted);
			}));
		}

		private void StationChanged(object sender, EventArgs e)
		{
			RefreshClients();
		}

		private void RefreshClients()
		{
			this.Invoke(new Action(() => {
				var clients = _wlnMgr.Stations.Values.AsEnumerable().ToList();
				grpClients.Text = string.Format((string)grpClients.Tag, clients.Count);
				dgvClients.DataSource = clients;
			}));
		}

		void btnSet_Click(object sender, EventArgs e)
		{
			try {
				string err = WlanManager.Validate(txtSSID.Text, txtPwd.Text);
				if (err != null) {
					this.Err("错误");
					return;
				}

				_wlnMgr.SetConnectionSettings(txtSSID.Text, (int)numMaxClients.Value);
				_wlnMgr.SetSecondaryKey(txtPwd.Text);
				_wlnMgr.SetEnable(true);
				if (cmbSharings.SelectedValue != null) {
					if (!_wlnMgr.IsHostedNetworkStarted)
						_wlnMgr.StartHostedNetwork();
					_icsMgr.EnableIcs((Guid)cmbSharings.SelectedValue, _wlnMgr.HostedNetworkInterfaceGuid);
				}
				this.Info("设置已生效!");
			} catch (Exception ex) {
				MessageBox.Show(ex.Message);
			}
		}

		void ChkShowPwdCheckedChanged(object sender, EventArgs e)
		{
			txtPwd.PasswordChar = ((CheckBox)sender).Checked ? '\0' : '*';
		}

		private void FrmMain_Load(object sender, EventArgs e)
		{
			txtSSID.Text = _wlnMgr.SSID;
			txtPwd.Text = _wlnMgr.Key;
			numMaxClients.Value = _wlnMgr.NumberOfPeers;
			RefreshConnections();
			RefreshClients();
			HostedNetworkStateChanged(null, null);
		}
		private void btnRefreshSharings_Click(object sender, EventArgs e)
		{
			RefreshConnections();
		}

		private void btnSwitch_Click(object sender, EventArgs e)
		{
			if (_wlnMgr.IsHostedNetworkStarted) {
				_wlnMgr.StopHostedNetwork();
			} else {
				_wlnMgr.StartHostedNetwork();
			}
		}

		private void ntfyDock_MouseClick(object sender, MouseEventArgs e)
		{
			if (e.Button == MouseButtons.Left) {
				if (!Visible) {
					Visible = true;
					WindowState = FormWindowState.Normal;
				} else {
					Hide();
				}
				Activate();
			}
		}

		private void FrmMain_SizeChanged(object sender, EventArgs e)
		{
			if (WindowState == FormWindowState.Minimized) {
				Hide();
			}
		}

		private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
		{
			Close();
		}

		private void StartToolStripMenuItem_Click(object sender, EventArgs e)
		{
			_wlnMgr.StartHostedNetwork();
		}

		private void StopToolStripMenuItem_Click(object sender, EventArgs e)
		{
			_wlnMgr.StopHostedNetwork();
		}

		private void btnIPSet_Click(object sender, EventArgs e)
		{
			string[] ipaddrs, masks, gateways, dns;
			string currentIps = null;
			WMIHelper.GetIP(_wlnMgr.HostedNetworkInterfaceGuid, out ipaddrs, out masks, out gateways, out dns);
			ipaddrs = (ipaddrs ?? Enumerable.Empty<String>()).Where(_ => RegexIP.IsMatch(_)).ToArray();
			if (ipaddrs.Any()) {
				currentIps = String.Join(" | ", ipaddrs);
			}
			bool ok = false;
			do {
				string ipAddr = Interaction.InputBox("输入IP地址:", currentIps == null ? "设置IP" : "当前IP:"   currentIps).Replace(" ", "");
				if (ipAddr.Length == 0) {
					ok = true;
				} else {
					if (!RegexIP.IsMatch(ipAddr)) {
						this.Warn("IP地址格式不正确!");
						ok = false;
					} else {
						WMIHelper.SetIP(_wlnMgr.HostedNetworkInterfaceGuid, ipAddr, "255.255.255.0", "", "");
						this.Info("设置成功!");
						ok = true;
					}
				}
			} while (!ok);
		}

		private void btnSharingMgr_Click(object sender, EventArgs e)
		{
			_frmSharing.ShowDialog(this);
		}
	}
}

标签: C# wifi

实例下载地址

C# 虚拟路由助手、虚拟wifi 源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警