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;
}
}
}
}
}相关推荐
C#登陆器源代码
某人的热血江湖C#登陆器源码 源代码.有爱自己修复.rar
技术转移机构如何基于数据提升项目撮合精准度?.docx
技术转移机构如何基于数据提升项目撮合精准度?
超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)
内容概要:本文系统研究了超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无感控制中的应用,重点涵盖其理论基础、离散化实现方法及Simulink仿真验证。文章深入阐述了两种高阶滑模控制策略的设计原理,利用磁链无感观测技术实现转子位置与速度的精确估计,从而省去物理传感器,有效提升了系统的可靠性与鲁棒性。同时,提供了完整的Simulink仿真模型构建方案,包括控制器设计、关键参数整定及动态响应性能分析,充分验证了所提出的方法在零速与低速工况下的卓越控制性能和有效性。; 适合人群:具备电机控制、现代控制理论基础知识及熟练掌握MATLAB/Simulink仿真技能的研究生、科研人员与工程技术人员。; 使用场景及目标:①深入理解高阶滑模控制在电机驱动系统中的设计思想与具体实现;②掌握基于滑模观测器的无感控制核心技术;③开展永磁同步电机高性能控制算法的理论研究、仿真验证与工程化探索。; 阅读建议:建议将文中详尽的理论推导与Simulink仿真模型相结合进行学习,重点关注滑模面的构建、抖振抑制策略的实施以及离散化处理的细节,有条件的研究者可进一步将算法移植到DSP等硬件平台进行实验验证,以深化对理论的理解并检验其实际应用效果。
多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)
内容概要:本文系统阐述了基于Matlab的多源动态最优潮流分布鲁棒优化方法,聚焦于IEEE118节点电力系统,旨在应对高比例可再生能源接入背景下源荷双重不确定性所带来的调度挑战。该方法深度融合分布鲁棒优化理论,通过构建能够抵御最坏情况概率分布的决策模型,有效提升了电力系统在复杂不确定性环境下的运行安全性、经济性与可靠性。研究不仅提供了完整的Matlab代码实现,便于结果复现与算法验证,还特别关注了含风电等新能源的现代电网低碳调度问题,为解决实际工程中的优化调度难题提供了强有力的理论支撑和技术工具。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、科研人员及从事智能电网优化运行、能源系统规划等相关领域的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源接入的电力系统动态最优潮流问题;②掌握分布鲁棒优化在电力系统经济调度、低碳调度中的建模思想与求解方法;③利用IEEE118标准测试系统进行算法有效性验证与性能对比分析;④基于所提供的Matlab代码进行二次开发,探索新型不确定性优化理论在电力系统中的创新应用。; 阅读建议:建议读者结合电力系统最优潮流、不确定性优化理论(特别是分布鲁棒优化)的背景知识进行学习,重点关注模型的构建逻辑、目标函数与约束条件的设计原理,以及Matlab代码的具体实现细节。在学习过程中,应动手调试代码,尝试修改系统参数(如新能源出力波动范围、负荷水平等),以观察不同场景下优化结果的变化,从而深刻理解该方法的适应性、优势及其潜在的局限性。
车间调度基于GA、PSO、SA、ACO、TS优化算法的车间调度比较研究(Matlab代码实现)
内容概要:本文系统性地比较了遗传算法(GA)、粒子群优化(PSO)、模拟退火(SA)、蚁群优化(ACO)和禁忌搜索(TS)五种智能优化算法在车间调度问题中的性能表现,并提供了基于Matlab的完整代码实现。研究聚焦于调度优化的核心目标——最小化完工时间(makespan),通过标准测试案例对各算法的收敛速度、求解精度和稳定性进行了深入对比分析,旨在为实际生产调度中算法的选择与改进提供科学依据。文中不仅详述了每种算法的设计思路与关键参数设置,还展示了其实现逻辑,便于读者理解、复现与拓展。; 适合人群:从事智能制造、工业工程、运筹优化等相关领域的研究人员,以及具备Matlab编程基础、希望将智能优化算法应用于实际调度问题的研究生和工程师。; 使用场景及目标:① 掌握主流智能优化算法在解决NP-hard车间调度问题上的具体应用与差异;② 学习如何利用Matlab实现并对比不同优化算法的性能;③ 为解决生产制造、物流配送等领域中的资源调度难题提供算法选型和技术参考。; 阅读建议:建议读者在阅读时重点关注各算法的Matlab实现代码和实验结果对比部分,动手运行代码以直观感受不同算法的寻优过程和效果差异。同时,可结合具体调度约束条件,尝试调整算法参数或融合多种算法思想,以深化对优化机理的理解。


