gpt4 book ai didi

c# - 正确实现 C# TCP 重新连接客户端

转载 作者:可可西里 更新时间:2023-11-01 02:34:37 26 4
gpt4 key购买 nike

我必须编写一个能够重新连接到服务器的TCP 客户端。由于网络连接质量差或某些维护问题,服务器可能不可用。我正在寻找该领域的优质解决方案。

我目前的解决方案如下:

  • 在 ConnectionState 枚举 {Offline, Online, Connecting} 中保持连接状态
  • 使用 TcpClient 类创建客户端。
  • 创建两个名为 ConnectionCheckTimerReconnectTimer 的计时器>
  • 连接到服务器
  • 启动读者线程和连接检查计时器
  • 使用 tcpClient.GetStream() 执行读取,然后从该流中读取
  • 当 readerLoop 中捕获到异常时,客户端状态更改为离线并启动 ReconnectTimer
  • ConnectionCheckTimer 定期检查 lastMessageTimestamp 并将其与当前时间进行比较,如果间隔大于 maxValue 则启动 ReconnectTimer

目前我对这个解决方案不满意,因为它仍然会生成异常,例如 TcpClient.NetworkStream 上的 ObjectDisposedException。我正在寻找一些干净且可重用的 Tcp 重新连接客户端实现,它能够处理连接、断开连接和读取数据期间可能发生的所有套接字问题。

最佳答案

如果您遇到连接问题,总会有异常(exception)。我认为你有一个合理的大纲,你只需要处理异常。您可以从您自己的 Socket 类实现开始并编写 TCPIP 服务器。起始代码在 MS:

http://msdn.microsoft.com/en-us/library/fx6588te(VS.71).aspx

C# 代码在 VB 页面的一半位置。

关于c# - 正确实现 C# TCP 重新连接客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3450103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com