- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已阅读 this explanation和 this manual page关于htons
、htonl
、ntohl
和ntohs
的用法,但是我还是不太明白它们的用法(一般来说,我对套接字 API 和网络编程还很陌生)。我确实了解大小 Endian 和字节顺序,但我不确定如何在我的聊天应用程序代码中正确实现这些功能,以便它在不同的机器上一致地工作(一个使用大 Endian,另一个使用小 Endian)。
我的具体情况的一些背景信息;我有一个(几乎)完全可用的聊天应用程序,并且一直在使用 htons
,但经过一些研究后,这似乎是不可靠的。我意识到 this question可能看起来很相似,但是在这里我问的是一个实现示例,我已经知道这些调用的基本功能。
最佳答案
这个想法是对整数类型有一些通用的表示。 TCP/IP 使用 NBO,网络字节排序。无论它是什么(大端或小端或更奇特的)发送 16 位整数或 32 位整数的方式是在发送这样的数据。然后在接收时,您必须使用 ntohs
和 ntohl
将其转换回您的主机表示:
Sender要发送值uint32_t a
,然后发送htonl(a)
返回的数据,比如d。
接收方获取 d
,应用 ntohl(d)
并获得正确的 uint32_t
值。
这些只是编码/解码 函数。发送方发送代码(v),然后接收方得到解码(代码(v))!您不必知道 code(v) 等于什么(没兴趣)。
如果您觉得它不可靠,那是因为您没有按应有的方式使用它。
关于c - 在 htons 和 htonl 之间做出选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519018/
我创建了一个库项目,然后构建它,获取 .aar 并解压缩它。获取包含库的 classes.jar 文件,并将其添加到另一个项目中。该项目识别我的文件,我可以从中调用方法和函数。我的问题是我尝试从我的库
这不是现实世界的问题,我只是想了解如何创建 promise 。 我需要了解如何为不返回任何内容的函数做出 promise ,例如 setTimeout。 假设我有: function async(ca
我是 Promise 的新手。我写了两个例子: 第一个是: new RSVP.Promise(function (resolve, reject) { setTimeout(function
我有一个 nodejs (express) 作为服务器端,一个 angular 6 作为客户端。在服务器中我有中间件功能,可以进行 session 检查。如果 session 无效或不存在,我想向客户
我有一个 nodejs (express) 作为服务器端,一个 angular 6 作为客户端。在服务器中我有中间件功能,可以进行 session 检查。如果 session 无效或不存在,我想向客户
我有四个 I/O 操作:A、B、C 和 D。它们中的每一个都应该使用 vertx.executeBlocking 来执行。我应该有以下行为: //PSEUDOCODE waitForExecuteBl
我是一名优秀的程序员,十分优秀!