c# - 为 2 个不同的 udp 客户端使用 2 个 wifi
问题描述
我有 ac#win 应用程序。我正在使用 wifi 进行互联网连接。
我目前有一个上传到我的服务器数据的 udp 客户端。我有另一个上传到本地局域网服务器的 udp 客户端。
数据在两个 udp 通道上每秒发送 10 次。
有时数据没有发送,我在其中一个上遇到“连接被拒绝”错误。我的想法是,如果我将另一个 wifi 插入我的 USB 端口,我将获得另一个分配的 dhcp 地址,我可以在 1 个 wifi 点上发送数据,在另一个上发送数据。
这可以做到吗。我可以指定从哪个 IP 地址发送数据吗?
谢谢
这是我当前的代码:
内部类 WanService { 私有静态 UdpClient _udpCloudClient;
public static void Start()
{
while (true)
{
try
{
Thread.Sleep(3000);
_udpCloudClient = new UdpClient(Constants.GetUdpServerIp(), Constants.ServerUploadPort);
}
catch (Exception ex)
{
//handle
}
if (_udpCloudClient?.Client == null)
{
continue;
}
if (_udpCloudClient.Client.Connected) return;
}
}
public static void SendImage()
{
try
{
if (_udpCloudClient == null) return;
_udpCloudClient.Send(Globals.FinalPacket, Globals.FinalPacket.Length);
}
catch (SocketException sex)
{
//handle
}
catch (Exception ex)
{
//handle
}
finally
{
if ((_udpCloudClient != null && !_udpCloudClient.Client.Connected) || (_udpCloudClient == null))
{
Start();
}
}
}
}
解决方案
不,您不能直接使用这样的高级客户端选择发送IP地址,这是由Windows完成的。
如果您有机会修改服务器和客户端,最好使用某种类型的库来为您处理有损连接。我正在考虑GRPC 的流媒体功能。
推荐阅读
- amazon-web-services - 使用 sigv4 进行身份验证的 API 网关给出“消息:缺少身份验证令牌”
- ios - 更新后 UITableView 的 numberOfRowsInSection 中的 return 语句崩溃
- javascript - 我可以在 quill 中获取当前可见文本的事件吗?
- redis - 增加 Redis 排序集中的成员
- android - 召回 CallBack(); 需要使用时的功能
- react-native - React Native - 如果我在 React Native 中隐藏警告可以吗?
- python-3.x - 如何比较python中的两个.ico(图标)文件?
- rxjs - 在 takeUntil 之后做一些动作
- swift - UITableView 调查应用程序并将数据附加到苹果号码
- javascript - 使用对象构造函数和Javascript将输入字段中的“记录”存储到数组中?