无线服务器ip输入有误,如果用户输入错误的服务器IP地址,则显示错误消息

我有一个客户端/服务器应用程序,用户需要输入服务器的IP地址才能连接到它。如果用户输入的不是IP地址,我会得到一个未处理的异常。如果用户输入错误的IP地址,应用程序将完全冻结,必须强行关闭。

如果用户输入IP地址以外的其他内容(而不是显示未处理的异常错误),我设法使用try-catch来获取友好的错误消息,这样就可以让他们再试一次。但是我无法弄清楚如果用户输入IP地址时如何弹出相同的消息框,但是它的IP地址错误(以避免程序冻结)。

这是显示我的连接过程的片段:

try

{

System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"/ServerIP.cfg", ServerIPbox.Text);

string ServerIP = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"/ServerIP.cfg");

serverEndPoint = new IPEndPoint(IPAddress.Parse(ServerIP), 8888);

}

catch (FormatException)

{

MessageBox.Show("Invalid IP address");

return;

}

catch (SocketException)

{

return;

}

在我的客户端应用中;用户将运行服务器应用程序的计算机的IP地址输入文本框,然后按Enter键或单击连接按钮以启动try块。

我对C#很陌生,所以我不确定它是否可行;但理想情况下,我希望客户端能够在尝试连接之前检查输入的IP地址是否实际上是服务器的IP地址。这样我就可以完全避免异常,而且看起来这样做是正确的,而不是在友好弹出窗口后面隐藏错误信息。

编辑:我尝试过使用Darshan Patel的答案,但我遇到了一些问题。首先,这是我的代码:

private void ConnectButton_Click(object sender, EventArgs e)

{

System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"/ServerIP.cfg", ServerIPbox.Text);

string ServerIP = System.IO.File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + @"/ServerIP.cfg");

try

{

var myRequest = (HttpWebRequest)WebRequest.Create(ServerIP);

var response = (HttpWebResponse)myRequest.GetResponse();

if (response.StatusCode == HttpStatusCode.OK)

{

serverEndPoint = new IPEndPoint(IPAddress.Parse(ServerIP), 8888);

//CONNECT TO SERVER

Client.Connect(serverEndPoint);

SendMessage("Client Connected (" + DateTime.Now + ")");

}

}

catch (Exception ex)

{

MessageBox.Show("Unable to connect : " + ex.Message);

}

现在我得到了#34;无法连接.."每次单击ConnectButton时都会显示消息,无论我是否已成功连接。

此外,在获得"无法连接后..."消息,我的代码继续运行,而不是保持原状,并允许用户尝试输入正确的IP地址。

编辑2:以下是修改原始代码的另一种尝试:

private void ConnectButton_Click(object sender, EventArgs e)

{

try

{

//ATTEMPT TO CONNECT TO SERVER

serverEndPoint = new IPEndPoint(IPAddress.Parse(ServerIPbox.Text), 8888);

Client.Connect(serverEndPoint);

}

//INCORRECT IP ADDRESS WAS ENTERED

catch (Exception)

{

MessageBox.Show("Please enter a valid IP address");

return;

}

//SUCCESSFULLY CONNECTED TO SERVER

System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + @"/ServerIP.cfg", ServerIPbox.Text);

在此尝试中,我的代码捕获任何不是IP地址的内容,并在将其写入" ServerIP.cfg"之前停止它。文件,并显示"无效的IP地址"消息,允许用户再试一次。

用户输入IP地址后,即可将其保存到" ServerIP.cfg"文件和(理想情况下)它们连接到服务器。

唯一的问题是;如果用户输入了IP地址,但它不是运行服务器的机器的IP,则应用程序停止响应。

如果用户输入9个号码的任意组合(程序认为该号码是IP地址),该应用程序也会停止响应

在让程序尝试连接之前,我需要一种可靠的方法来检查用户输入的IP地址(或9个数字)是否实际上是服务器正在运行的机器的正确IP地址它。通过这种方式,我可以阻止应用程序在连接尝试失败时冻结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值