优化下面的代码,保证监听断开后,做异常处理并重新监听 // 监听地址和端口号 string ipAddressString = datas.Tables[0].Rows[0]["Weighingroomip"].ToString(); int port = int.Parse(datas.Tables[0].Rows[0]["Weighbridgeport"].ToString()); Log4Txt.add(string.Format($"Server started at {ipAddressString}:{port}")); // 创建一个 IP 地址对象 IPAddress ipAddress = IPAddress.Parse(ipAddressString); // 创建一个侦听器 TcpListener listener = new TcpListener(ipAddress, port); // 开始监听 listener.Start();监听断开后,做异常处理并重新监听
时间: 2024-03-09 14:49:29 浏览: 51
可以使用一个 while 循环来实现监听断开后的异常处理和重新监听,具体代码如下:
```csharp
string ipAddressString = datas.Tables[0].Rows[0]["Weighingroomip"].ToString();
int port = int.Parse(datas.Tables[0].Rows[0]["Weighbridgeport"].ToString());
Log4Txt.add(string.Format($"Server started at {ipAddressString}:{port}"));
while (true)
{
try
{
// 创建一个 IP 地址对象
IPAddress ipAddress = IPAddress.Parse(ipAddressString);
// 创建一个侦听器
TcpListener listener = new TcpListener(ipAddress, port);
// 开始监听
listener.Start();
Log4Txt.add("Listening...");
// 接收客户端连接请求
TcpClient client = listener.AcceptTcpClient();
// 处理客户端请求
// ...
// 关闭连接
client.Close();
listener.Stop();
}
catch (Exception e)
{
Log4Txt.add($"Error: {e.Message}");
}
}
```
这段代码会一直循环执行,如果监听断开则会捕获异常并记录日志,然后重新创建侦听器并开始监听。
阅读全文