当服务器关闭并再次打开时,是否有任何套接字功能可以自动将客户端连接到服务器



如果我对我的问题有一个想法,那将是一个很大的帮助。我正在使用服务器和客户端应用程序。我正在使用伯克利插座。我现在的问题是,当我的服务器关闭或与客户端断开连接时,我的客户端会抛出一个异常。

"System.Net.Sockets.SocketException(0x80004005(:已建立连接已被位于的主机中的软件中止System.Net.Socket.Socket.BeginSend(Byte[]缓冲区,Int32偏移量,Int32size,SocketFlag socketFlags,AsyncCallback回调,对象状态(
在CCLink_Structure.Form1.Send_Message_Timer_Tick(对象发送方,C:\Users\yilia\source\repos\CLink Structure\CLink中的EventArgs e(Structure\Form1.cs:第494行System.Windows.Forms.Timer.OnTick(EventArgs e(位于System.Windows.Forms.Timer.TimerNativeWindow.WndProc(消息&m(位于System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32消息,IntPtr wparam,IntPtr lparam(

即使服务器关闭,我的客户端也希望保持稳定,并且我的客户端应该在服务器打开时自动连接回服务器。
我正在c#windows窗体应用程序中开发一个用户界面程序。在我的程序中,我使用form.timer将数据连续发送到服务器,数据包之间的间隔时间为50ms。我现在唯一的问题是,我希望我的客户端在不引发任何异常的情况下停止,并且应该在服务器打开时重新连接。

toolStripStatusLabel1.Text = "Connecting...";
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
String IP = System.Convert.ToString("192.168.68.110");
int Port = System.Convert.ToInt32("54601");
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(IP),
Port);
newsock.BeginConnect(iep, new AsyncCallback(Connected), newsock);
}
catch (Exception ex) { MessageBox.Show(ex.Message); }```

您所说的是弹性和重试功能。这是你需要将自己编码到你的程序中。

您可以尝试使用像Polly这样的3PP库来帮助您。https://github.com/App-vNext/Polly

但我同意这些评论,你可能应该看看服务器为什么会宕机。如果这是有计划的维护,那么您应该考虑一个高可用性解决方案,在该解决方案中,您可以以弹性1+1或N+1的方式部署服务器。

最新更新