Rust 不接收来自 C++ 的 UDP 消息

2023-12-07

我正在使用 UDP 创建服务器/客户端范例,但 Rust 服务器未接收 C++ 客户端消息。我已经能够成功地进行 Rust 服务器/Rust 客户端和 C++ 服务器/Rust 客户端通信。

这让我相信我的 C++ 代码存在问题,或者在将 C++ 缓冲区发送到 Rust 时存在某种类型的沟通不畅,但我使用了我认为有效的代码。这仅是从同一台计算机发送到同一台计算机,并且尚未扩展到计算机到计算机。

我不是 UDP / TCP 方面的专家,所以我可能做错了一些事情

铁锈服务器:

use std::net::UdpSocket;

fn main() {
    let udp: UdpSocket = UdpSocket::bind("0.0.0.0:12000")
        .expect("Failed to bind to address for sending/receiving messages");

    udp.connect("127.0.0.1:12683")
        .expect("Failed to connect address receiving our messages");

    //The below (recv_from) is set to blocking
    let mut buf = [0; 20];
    let (number_of_bytes, src_addr) = udp.recv_from(&mut buf).expect("Didn't receive data");
    let filled_buf = &mut buf[..number_of_bytes];
    println!("{:?}", filled_buf);
}

C++客户端:

boost::asio::io_service io_service;
ip::udp::socket socket( io_service );
ip::udp::endpoint remote_endpoint;
std::cout << "sending reply..." << std::endl;
socket.open( ip::udp::v4() );

remote_endpoint = ip::udp::endpoint( ip::address::from_string( "127.0.0.1" ), 12000 );
unsigned char buff[8]{ 5,5,5,5,5,5,5,5 };
boost::system::error_code err;
//auto sent = socket.send_to( buffer( "Jane Doe"), remote_endpoint, 0, err );
auto sent = socket.send_to( buffer( buff ), remote_endpoint, 0, err );
std::cout << err << std::endl;
std::cout << "Sent: " << sent << std::endl;
socket.close();

C++ 客户端声明数据已发送(sent变量)并且没有错误(err多变的)。但是,我的 Rust 服务器从未收到数据。它被设置为非阻塞,因此它只是坐在那里等待接收数据(当客户端发送到端口 12000 时,它会查看端口 12000)。


当您连接 UDP 套接字时,这会导致 UDP 套接字仅从其连接的地址接收数据报。服务器不应连接其 UDP 套接字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 不接收来自 C++ 的 UDP 消息 的相关文章

  • 异步回调到BackgroundWorker

    我想使用 NET FTP 库 http netftp codeplex com http netftp codeplex com 该库提供 BeginOpenRead string AsyncCallback object 使用异步编程模型
  • TPL Dataflow如何删除块之间的链接

    我想知道 如何删除块之间的链接 换句话说 我想要与 LinkTo 相反 我想写一个基于 tlp 数据流的记录器 我编写了这个接口 并希望在需要时删除 ILogListener 的订阅 public interface ILogManager
  • C# 3 新功能帖子(与 .Net 3.5 功能无关)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Net F
  • 在 Linux 上,在 Eclipse CDT 中使用 gdb 调试 C++ 应用程序,如何向 stdin 输入内容?

    在 Linux 上 我尝试在 Eclipse CDT 中使用 gdb 调试 C 应用程序 例如应用程序applic exe接受一些命令行参数arg1 and arg2它期望一些数据stdin 比如说 取自文件input txt 通常 要在控
  • 如何将带有自定义标头的任意 JSON 数据发送到 REST 服务器?

    TL DR 如何将 JSON 字符串发送到带有 auth 标头的 REST 主机 我尝试了 3 种不同的方法 发现一种适用于匿名类型 为什么我不能使用匿名类型 我需要设置一个名为 Group Name 的变量 并且连字符不是有效的 C 标识
  • 要实现 XML 可序列化,从 ICollection 继承的类型必须具有 Add 的实现

    我有来自现有项目的 CSLA 1 x 框架 对象 我试图在新的 Net 4 0 项目中使用它 这些对象正在生产中使用 如果没有 2 组对象 我确实无法将它们转换为 2 x 或 EF 在我的 c webservice 中 当我尝试运行它时 我
  • 根据值更改 DataGrid 单元格颜色

    我有一个 WPF 数据网格 我想要根据值使用不同的单元格颜色 我的 xaml 上有以下代码 Style TargetType DataGridCell 但不是只选择一个单元格而是选择所有行 我缺少什么 如果您尝试设置DataGrid Cel
  • “应用程序配置”文件中的最大键/值长度

    允许的最大长度是多少MyKey and MyValue在配置文件中
  • const int 列表而不是 enum

    我开始研究大型 C 代码库 并发现使用带有多个 const ints 字段的静态类 这个类的行为与枚举完全一样 我想将类转换为实际的枚举 但权力被拒绝 我想转换它的主要原因是这样我可以将枚举作为数据类型而不是 int 这对可读性有很大帮助
  • allocator.construct 循环是否等于 std::uninitialized_copy?

    在此背景下T是某种类型并且allocator是该类型的分配器对象 默认情况下是std allocator
  • cygwin $'\r':命令未找到错误

    我稍微修改了一个项目 在调试下它运行得很好 当我尝试在不调试的情况下构建它时 它显示错误 无法修复它 make Making all in third party make 1 Entering directory cygdrive c U
  • 从多页 tiff 中提取帧 - C#

    有一个多页 tiff 我想从此 Tiff 文件中提取第 n 页 帧 n 并保存它 如果我的多页 tiff 有 3 帧 在我提取一页 帧后 我想留下 1 张图像有 2 页 帧 并且 1 张图像只有 1 页 帧 下面是一些代码 用于将多帧 ti
  • 什么时候适合在 C++ 中使用 static(在未命名的命名空间上)?

    我一整天都在阅读有关未命名命名空间的文章 大多数文章都解释了何时应该在 static 关键字上使用未命名命名空间 但我仍然有一个大问题什么时候适合使用静态 毕竟它还没有完全弃用 那么带有静态函数的头文件我现在应该将它们放入未命名的命名空间中
  • NHibernate Criteria API 是否支持集合属性的投影?

    我需要使用条件 API 复制以下工作 HQL 查询 session CreateQuery select c from Parent p inner join p Children c where p Id 9 and c Id 33 Se
  • 最有用的用户制作的 C 宏(在 GCC 中,还有 C99)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • 实体框架中对象属性中的 NULL 值

    Tables Article Author Comment 1篇文章和1位作者可以有 评论 数据库中有 1 篇文章 1 位作者和 1 条评论 问题是 该代码 myBD my bd new myBD var articles by bd Ar
  • Fluent Validation 将 CustomAsync 更改为 MustAsync

    有人可以帮我解决这个问题吗 我正在努力改变CustomAsync 到 MustAsync 但我无法让事情发挥作用 下面是我的自定义方法 RuleFor o gt o MustAsync o gt return CheckIdNumberAl
  • Microsoft Graph API 调用无限期挂起

    我正在尝试使用 Microsoft Graph 查询 Azure Active Directory 用户信息 我可以很好地进行身份验证 但是当我尝试查询用户信息时client Users我的应用程序无限期挂起 没有超时 没有错误 只是挂起
  • qt 如何知道按钮被点击?

    我正在尝试编写一个程序 用声音进行一些操作 我的问题是我有 3 个播放按钮和 3 个标签 我希望无论我单击 播放 按钮 都应该播放按钮附近标签中名称的声音 我有一个没有任何参数的播放插槽 那么 如何分别连接到每个播放按钮和每个标签呢 实际上

随机推荐

  • 如何在 Lucene 中仅标记某些单词

    我在我的项目中使用 Lucene 并且需要一个自定义分析器 Code is public class MyCommentAnalyzer extends Analyzer Override protected TokenStreamComp
  • 需要正则表达式模式来将日期与可选时间相匹配

    我需要一个将日期与可选时间相匹配的正则表达式模式 该日期应该是有效的美国日期m d yyyy格式 时间应该是h mm ss am pm或24小时时间hh mm ss 比赛 2011 年 9 月 1 日 2011 年 9 月 1 日上午 10
  • 使用 Laravel 5.8 身份验证和外部 JSON API(创建自己的 ServiceProvider)

    我正在构建一个 Laravel 5 8 应用程序 作为用 Go 编写的外部 API 的前端 我将用户 通行证发布到 API 然后 API 使用 HTTP 200 和 JSON 令牌 JWT 或 HTTP 401 进行响应 以表明凭据无效 我
  • Angular 2 客户端错误

    我刚刚接触 Typescript 和 Angular 2 我想知道哪种方法最适合记录客户端错误 这样如果生产中发生问题 我就能够找出失败的方法以及引发的错误 该应用程序的后端是用 C 编写的 并连接到 SQL Server 数据库 数据通过
  • jQuery 不关闭窗口

    我正在为电子商务网站制作一个表单 供用户请求有关某个项目的 PDF 该表单工作正常并将用户发送到 感谢 页面 在感谢页面上 我让 jQuery 设置了 5 秒后关闭窗口的时间间隔 但它不起作用 在链接中嵌入关闭命令也不起作用 但是 如果 感
  • 将整数列表分配给 @var

    I can declare idOrder int set idOrder 21319 I want declare idOrder int set idOrder 21319 21320 用于 WHERE 子句使用 IN 运算符的一系列语
  • JPackage 只能用于一个应用程序?

    我有一个 java 应用程序 在运行时将生成另一个 JVM 但我想使用 jpackage 打包我的应用程序 它运行得很好 但在运行时 当我的应用程序尝试使用以下命令调用下一个 JVM 时 File javaHome new File Sys
  • 了解投影矩阵

    我试图了解投影向量的值范围是多少 看起来和MSDN说的不符 下面的代码输出一个彩色三角形 三角形完全可见 我期望在投影顶点之后 以下内容将成立 X和Y的范围是 1到1 Z的范围是0到1 我从这里得到这个信息 http msdn micros
  • 如何使用 pymongo 获取仅包含 ObjectId 的列表?

    我有以下代码 client MongoClient data base client hkpr restore agents collection data base agents agent ids agents collection f
  • 如何使用正则表达式提取 4 位数字

    我想提取后面的所有数字company id 部分并存储在变量中 我的字符串如下所示 String company company id 4100 data drm user id 572901936637129135 company id
  • 如何使用Pyarrow实现流式写入效果

    我拥有的数据是一种流数据 我想将它们存储到一个 Parquet 文件中 但是 Pyarrow 每次都会覆盖 Parquet 文件 那么我该怎么办呢 我尝试不关闭编写器 但这似乎是不可能的 因为如果我不关闭它 那么我将无法读取该文件 这是包
  • 访问文件时出错。网络连接可能已丢失

    因此 我使用 VBA 代码打开 Excel 文件 并将数据下载到包含代码的工作表中 它有效 现在我收到错误 访问文件时出错 网络连接可能已丢失 我打开代码看看它落在哪里 我以为文件可能已更改位置或名称已更改 当我浏览代码 使用 F8 时 我
  • 如何序列化java中实现的链表?

    我在网上读到 通过将派生对象声明为瞬态 可以省略派生对象的序列化 但是 在链表的情况下 链接是对象之间的内存引用 那么 我应该将其转换为数组并存储数组表示形式吗 Java 序列化的方式如下LinkedList 它获取所有元素并将它们写入Ob
  • 列表 - 如何查找某个项目出现的次数[重复]

    这个问题在这里已经有答案了 可能的重复 如何计算Python中列表项的出现次数 我正在进行一项民意调查 为此 我正在使用 Python 而我所坚持的部分是试图弄清楚如何计算特定事物 例如 杂货店 出现的次数 例如 民意调查 您最常在哪里看到
  • geohash 和最大距离

    前 6 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 0 61km 前 5 个字符匹配的两个 geohash 两个 geohash 之间的距离最大为 2 5km 问 5 位长度的给定 geohash 的任何一对边
  • CodeIgniter:解析位于 javascript 中的动态语言标题

    我有一个需要本地化的 JavaScript 代码 即 function js proc var some data this text needs to be translated dynamically at runtime 所以我这样重
  • 设置“可见性”后未获取“RelativeLayout get Height()”

    我想要的是 当我单击仪表板按钮时 它将像滑动抽屉一样打开 打开后再次单击它 它将关闭 我使用这个自定义抽屉是因为 SlidingDrawer 已弃用 现在的问题是 它工作正常 除了第一次单击按钮时 它会打开得非常快 没有任何动画 但会正常关
  • 有没有办法在Python Selenium中通过属性查找元素?

    我得到了这样的 html 片段
  • 使用 WMI 和 C# 的 CPU 使用率

    如何使用 WMI 在 C 中检索当前 CPU 使用情况 我看过很多使用性能计数器的帖子 但我需要一个可以与远程计算机一起使用的解决方案 我还找到了一个VB解决方案here 但如果可能的话 我更愿意在 C 中完成此任务 至少可以说 WMI 的
  • Rust 不接收来自 C++ 的 UDP 消息

    我正在使用 UDP 创建服务器 客户端范例 但 Rust 服务器未接收 C 客户端消息 我已经能够成功地进行 Rust 服务器 Rust 客户端和 C 服务器 Rust 客户端通信 这让我相信我的 C 代码存在问题 或者在将 C 缓冲区发送