登陆器源码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); ;
            }
        }


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章