C#尝试连接到服务器
我制作了一个自动连接的服务器客户端程序。 但是这个程序只有在我第一次启动服务器应用程序时才起作用,因为客户端需要连接。 我的目标是让客户端以2秒的延迟检查服务器是否已经创建。 我做了一个尝试和错误循环的while声明C#尝试连接到服务器,c#,server,client,try-catch,C#,Server,Client,Try Catch,我制作了一个自动连接的服务器客户端程序。 但是这个程序只有在我第一次启动服务器应用程序时才起作用,因为客户端需要连接。 我的目标是让客户端以2秒的延迟检查服务器是否已经创建。 我做了一个尝试和错误循环的while声明 try { int a = 1; while (a == 1) { cliente.Connect(IP_End); if (cliente.Connected) { connectRe
try
{
int a = 1;
while (a == 1)
{
cliente.Connect(IP_End);
if (cliente.Connected)
{
connectRead();
a = 2;
}
else
{
while (!cliente.Connected)
{
int milliseconds = 2000;
Thread.Sleep(milliseconds);
cliente.Connect(IP_End);
MessageBox.Show(text);
if (cliente.Connected)
{
connectRead();
}
}
}
}
}
catch(SocketException se)
{
MessageBox.Show(se.Message);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
错误是:
无法建立连接,因为目标计算机主动拒绝连接192.168.254.28:100
方法如下:
private void connectRead()
{
STW = new StreamWriter(cliente.GetStream());
STR = new StreamReader(cliente.GetStream());
STW.AutoFlush = true;
backgroundWorker1.RunWorkerAsync();
backgroundWorker1.WorkerSupportsCancellation = true;
}
在不了解更多错误或所需功能的情况下,我可以告诉您将调用
connectRead()如果您点击第二个循环,代码>两次。要修复此问题,请使用以下内容替换第二个循环:
while (!cliente.Connected)
{
int milliseconds = 2000;
Thread.Sleep(milliseconds);
cliente.Connect(IP_End);
if (cliente.Connected)
{
connectRead();
a = 2;
}
}
编辑:
我还取出了消息框
,因为这似乎是不必要的,并且会暂停程序,直到您点击消息框上的Ok
编辑2:
根据代码,您几乎完全正确。我认为“Connect”扩展方法应该更新客户端中的值。如果它像我那样做的话,它将引入一个单独的方法,返回一个布尔值,这将有助于简化代码。例如:
private bool ConnectClient(SomeClient clientToConnect, IPAddress ipToConnectTo, int delay)
{
System.Threading.Thread.Sleep(delay);
clientToConnect.Connect(ipToConnectTo);
return clientToConnect.Connected;
}
try
{
bool successfulConnection;
while (!successfulConnection)
{
successfulConnection = ConnectClient(yourClient, "10.10.10.10", 2000);
}
}
catch
{
// ...
}
不要发布代码的图像。将实际代码直接包含在问题集中a=2代码>在第二个循环的if
语句中。另外,发生了什么,发生了什么错误,需要什么结果?我将“a”设置为1以输入while。如果它输入If,它执行该方法并说“a”是2,因此n重新输入whilet错误是:无法建立连接,因为目标计算机主动拒绝它们192.168.254.28:100if(cliente.Connected){connectRead();a=2;//在这种情况下不做任何事情}然后出现网络问题,您可能需要检查防火墙设置,检查端口100是否打开,并确保可以从pc访问192.168.254.28
,(ping
it)主动拒绝
使我认为防火墙或端口已关闭。