登陆器源码C#

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;

using System.Diagnostics;

using System.Net.Sockets;

using System.Net;

namespace Legend_of_mir2

{

public partial class Main : Form

{

//服务器名称数组

string[] ServerName = new string[25];

//服务器IP地址数组

string[] ServerIP = new string[25];

//服务器端口数组

string[] ServerPort = new string[25];

//服务器名称用于写入配置文件

string StartGameName = null;

//服务器IP地址用于写入配置文件

string StartGameNameIP = null;

//服务器端口用于写入配置文件

int StartGameNamePort = 7000;

public Main()

{

InitializeComponent();

}

/// <summary>

/// 程序加载

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void Main_Load(object sender, EventArgs e)

{

//判断是否在传奇目录

if (File.Exists(Environment.CurrentDirectory + "//map//0.map"))

{

}

else

{

MessageBox.Show("请在传奇目录运行!","提示");

//关闭程序

Application.Exit();

}

}

/// <summary>

/// 点击进入游戏按钮触发事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

//获取应用程序路径

string path = Environment.CurrentDirectory;

//检测并创建配置文件

FileStream FsFtp = new FileStream(path + "//ftp.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

FileStream FsMir = new FileStream(path + "//mir.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

FileStream FsMst = new FileStream(path + "//mirsetup.ini", FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);

//关闭流

FsFtp.Close();

FsMir.Close();

FsMst.Close();

//写入配置文件

//配置文件ftp.ini

StreamWriter SwFtp = new StreamWriter(path + "//ftp.ini");

SwFtp.WriteLine("[Server]");

SwFtp.WriteLine("ServerCount=1");

SwFtp.WriteLine("Server1caption=" + StartGameName);

SwFtp.WriteLine("Server1name=" + StartGameName.ToString().Trim());

//配置文件mir.ini

StreamWriter MrFtp = new StreamWriter(path + "//mir.ini");

MrFtp.WriteLine("[setup]");

MrFtp.WriteLine("ServerAddr=" + StartGameNameIP);

MrFtp.WriteLine("FontName=Fixedsys");

//配置文件mirsetup.ini

StreamWriter MsFtp = new StreamWriter(path + "//mirsetup.ini");

MsFtp.WriteLine("[setup]");

MsFtp.WriteLine("ServerAddr=" + StartGameNameIP);

MsFtp.WriteLine("FontName=Fixedsys");

//关闭流

MsFtp.Close();

MrFtp.Close();

SwFtp.Close();

try

{

//设置启动进程信息

ProcessStartInfo info = new ProcessStartInfo();

//启动文件

info.FileName = path + "//Mir.Client.dat";

//禁止使用系统程序外壳程序启动进程

info.UseShellExecute = false;

//启动进程

Process.Start(info);

}

catch (Exception ex)

{

//异常

MessageBox.Show("意外错误!!!"+ex.Message); ;

}

}

/// <summary>

/// 添加新服务器

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void AddGames_Click(object sender, EventArgs e)

{

//统计服务器数量

int Num = ListBox.Items.Count;

#region 服务器名称

if (tbName.Text != "" || tbName.Text != null)

{

//添加服务器名称进列表

ListBox.Items.Add(tbName.Text.Trim());

//添加服务器名称进入数组

ServerName[Num] = this.tbName.Text.Trim();

}

else

{

//服务器名称为填写

MessageBox.Show("请填写服务器名称!");

}

#endregion

#region IP地址判断

//获取用户输入IP地址

string ip = this.tbIP.Text.Trim();

//正则表达式判断IP地址合法性

if (System.Text.RegularExpressions.Regex.IsMatch(ip, "[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}"))

{

string[] ips = ip.Split('.');

if(ips.Length == 4 || ips.Length == 6)

{

if (System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)

{

//添加IP地址进入数组

ServerIP[Num] = ip;

}

else

{

//清除列表中 当前用户输入的错误信息

ListBox.Items.Remove(tbName.Text.Trim());

MessageBox.Show("IP地址错误!请从新输入!");

}

}

else

{

//清除列表中 当前用户输入的错误信息

ListBox.Items.Remove(tbName.Text.Trim());

MessageBox.Show("IP地址错误!请从新输入!");

}

}

else

{

//清除列表中 当前用户输入的错误信息

ListBox.Items.Remove(tbName.Text.Trim());

MessageBox.Show("IP地址错误!请从新输入!");

}

#endregion

#region 端口号判断

try

{

//获取用户输入端口号

int Port = int.Parse(this.textBox2.Text.Trim());

//判断端口号是否为整数

int TextNum = Convert.ToInt32(Port);

//添加端口号进入数组

ServerPort[Num] = Port.ToString();

}

catch

{

//清除列表中 当前用户输入的错误信息

ListBox.Items.Remove(tbName.Text.Trim());

MessageBox.Show("对不起,端口号不正确!请重新输入");

}

#endregion

}

/// <summary>

/// 选择服务器时触发事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void ListBox_MouseDown(object sender, MouseEventArgs e)

{

//获取用户在列表中 选择的项

int Num = ListBox.SelectedIndex;

//如果列表为空

if (Num == -1)

{

MessageBox.Show("还未添加服务器,/r/r/n请添加服务器!","友情提示");

return;

}

//获得用户选择的服务器IP地址

string Serverip = ServerIP[Num];

//获得用户现在的服务器端口

string Serverport = ServerPort[Num];

//状态显示

State.Text = "正在测试.....";

try

{

//测试服务器端口是否开放

TcpClient tp = new TcpClient(Serverip, int.Parse(Serverport));

//结束连接

tp.Close();

//状态显示

State.Text = "该服务器正常运行!";

//设置进程启动参数----IP name port

StartGameName = ServerName[Num].ToString();

StartGameNameIP = ServerIP[Num].Trim();

StartGameNamePort = int.Parse(ServerPort[Num]);

}

catch (Exception)

{

State.Text = "该服务器维护中!";

}

}

/// <summary>

/// 鼠标移动到listBox触发事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void ListBox_MouseEnter(object sender, EventArgs e)

{

//如果listbox还没选择项

if (ListBox.SelectedIndex == -1)

{

//如果列表框项数量>0

if (ListBox.Items.Count > 0)

{

//默认选择第一项

ListBox.SelectedIndex = 0;

}

else

{

//设置为未选择状态

ListBox.SelectedIndex = -1;

}

}

}

}

}

//解决部分的代码

/// <summary>

/// 点击进入游戏按钮触发事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click(object sender, EventArgs e)

{

try

{

//获取应用程序路径

string path = Environment.CurrentDirectory;

//检测并创建配置文件

FileStream FsFtp = new FileStream(path + "//ftp.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

FileStream FsMir = new FileStream(path + "//mir.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);

FileStream FsMst = new FileStream(path + "//mirsetup.ini", FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);

//写入配置文件

//配置文件ftp.ini

StreamWriter SwFtp = new StreamWriter(FsFtp, Encoding.Unicode);

SwFtp.WriteLine("[Server]");

SwFtp.WriteLine("ServerCount=1");

SwFtp.WriteLine("Server1caption=" + StartGameName);

SwFtp.WriteLine("Server1name=" + StartGameName.ToString().Trim());

//配置文件mir.ini

StreamWriter MrFtp = new StreamWriter(FsMir, Encoding.Unicode);

MrFtp.WriteLine("[setup]");

MrFtp.WriteLine("ServerAddr=" + StartGameNameIP);

MrFtp.WriteLine("FontName=宋体");

//配置文件mirsetup.ini

StreamWriter MsFtp = new StreamWriter(FsMst, Encoding.Unicode);

MsFtp.WriteLine("[setup]");

MsFtp.WriteLine("ServerAddr=" + StartGameNameIP);

MsFtp.WriteLine("FontName=宋体");

//关闭流

MsFtp.Close();

MrFtp.Close();

SwFtp.Close();

//关闭流

FsFtp.Close();

FsMir.Close();

FsMst.Close();

//设置启动进程信息

ProcessStartInfo info = new ProcessStartInfo();

//启动文件

info.FileName = path + "//Mir.Client.dat";

//禁止使用系统程序外壳程序启动进程

info.UseShellExecute = false;

//启动进程

Process.Start(info);

}

catch (Exception ex)

{

//异常

MessageBox.Show("意外错误!!!"+ex.Message); ;

}

}