如果有多个目标IP和端口,如何优化这个设计?
时间: 2024-09-20 17:05:33 浏览: 29
如果需要处理多个目标IP和端口,一种更高效的优化方案是使用Dictionary或者列表来存储它们,每个键值对代表一个特定的目标。这样可以根据需求动态地添加、删除或切换目标。例如:
```csharp
public class MessageSender {
private Dictionary<SendTarget, Tuple<string, int>> targets; // 使用Tuple保存IP和端口
public MessageSender() {
targets = new Dictionary<SendTarget, Tuple<string, int>>();
targets.Add(SendTarget.IP1, Tuple.Create(ConfigurationManager.AppSettings["jieshou_ip1"], int.Parse(ConfigurationManager.AppSettings["jieshou_port1"])));
targets.Add(SendTarget.IP2, Tuple.Create(ConfigurationManager.AppSettings["jieshou_ip2"], int.Parse(ConfigurationManager.AppSettings["jieshou_port2"])));
}
public void SendMessage(string message, SendTarget target) {
if (!targets.ContainsKey(target)) {
throw new ArgumentException("Invalid target.");
}
var (ip, port) = targets[target];
using (UdpClient client = new UdpClient()) {
client.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
byte[] sendBytes = Encoding.UTF8.GetBytes(message);
client.Send(sendBytes, sendBytes.Length);
}
}
}
```
在这个设计中,`SendMessage`方法会直接查找对应的`SendTarget`及其对应的IP和端口,无需在内部再做判断。这样既便于维护,也提高了代码的可读性和灵活性。
阅读全文