- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 android 上编译网络代码并看到编译错误。我正在使用的结构是 ip_mreq_source,它应该像这样在 header 中定义:
struct ip_mreq_source {
struct in_addr imr_multiaddr;
struct in_addr imr_sourceaddr;
struct in_addr imr_interface;
};
in_addr 应定义为:
typedef uint32_t in_addr_t;
struct in_addr
{
in_addr_t s_addr;
};
我从基于 Android 的编译器的 g++ (GCC 4.4.3) 中出来的详细错误:
arm-linux-androideabi-g++ -MMD -MP -MF groupsock/GroupsockHelper.o.d.org -fpic
-ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__
-D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float
-fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-
limit=64 -Igroupsock/include -Igroupsock/../UsageEnvironment/include -Iandroid-
ndk-r5b/sources/cxx-stl/system/include -Igroupsock -DANDROID -Wa,--noexecstack
-DANDROID_NDK -Wall -fexceptions -O2 -DNDEBUG -g -Iandroid-8/arch-arm/usr/include -c
groupsock/GroupsockHelper.cpp -o groupsock/GroupsockHelper.o && rm -f
groupsock/GroupsockHelper.o.d && mv groupsock/GroupsockHelper.o.d.org
groupsock/GroupsockHelper.o.d
groupsock/GroupsockHelper.cpp: In function 'Boolean socketJoinGroupSSM(UsageEnvironment&, int, netAddressBits, netAddressBits)':
groupsock/GroupsockHelper.cpp:427: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_multiaddr', which is of non-class type '__u32'
groupsock/GroupsockHelper.cpp:428: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_sourceaddr', which is of non-class type '__u32'
groupsock/GroupsockHelper.cpp:429: error: request for member 's_addr' in 'imr.ip_mreq_source::imr_interface', which is of non-class type '__u32'
我不确定是什么导致了错误。任何指示都会很棒 - 没有双关语。谢谢
最佳答案
感谢大家的帮助。能够在我使用的 android g++ 编译器的包含文件版本中追踪到不同结构定义的错误。
事实证明,Android 平台的 g++ 包含文件非常受限。这些 header 中的结构定义采用以下形式:
struct in_addr
{
__u32 s_addr;
};
和:
struct ip_mreq_source {
__u32 imr_multiaddr;
__u32 in_addr imr_sourceaddr;
int some_other_var
};
所以我的 struct2、struct3 和 struct4 实际上是 __u32(在 asm/types.h 中定义的无符号整数),甚至在这个旧版本中都不是结构。为了解决这个问题,我将我的用法更改为:
struct struct1 st1;
st1.struct2 = Value
代替:
struct struct1 st1;
st1.struct2.s = Value;
谢谢你带领我走上正确的道路。
;
关于c++ - IN_ADDR 结构在 android 中奇怪地定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040558/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我想使用 gethostbyname() 创建一个 in_addr 数组。在 Google 上查看后,我发现了这个简短的代码(在 http://www.logix.cz/michal/devel/va
我不明白MSDN's documentation因为它是成员(member)的。它要求我以前从未做过的事情,比如 S_un_b 成员需要 主机的 IPv4 地址,格式为四个 u_chars。 这对我来
我正在使用 pcap 库,我正在 try catch 源和目标 IP 地址,但它似乎给我完全随机的结果: 这是我的结构: struct sniff_ip { u_char ip_vhl; u_
查看 inet_pton 的返回值时和 inet_ntop 的参数在 PHP 手册中,它指的是 in_addr在这两种情况下。 快速搜索将我带到 MSDN Dev Center有了这个答案: The
好的,我有一个包含 struct in_addr 元素的结构。这应该使结构 addrlist_t 至少 12 字节大小 (8 + 4)。平台是amd64。 #include // struct in
只是想知道我是否有一个结构 in_addr,如何将其转换回主机名? 最佳答案 您可以通过将 struct in_addr 包装在 struct sockaddr_in 中来使用 getnameinfo
我正在尝试在 android 上编译网络代码并看到编译错误。我正在使用的结构是 ip_mreq_source,它应该像这样在 header 中定义: struct ip_mreq_source {
我正在阅读本教程:here但我不明白这部分是如何工作的。从 char** 转换为包含 unsigned long 的 struct in_addr ** 似乎很奇怪。 // Cast the h_ad
我的老师给了我一个任务,用 C++ 读取 pcap 文件并显示每条消息的一些信息。使用一些旧资源,我设法读取了 pcap 文件,但是我在访问 IP header 等方面遇到了问题。 我有ip_src对
假设您有以下 IP 地址: 192.168.0.255 如何将人类可读的 IP 地址存储到 struct in_addr 中?我对这种低级别的 C 网络编程是全新的,因此非常感谢任何帮助。 最佳答案
我正在尝试在我的 C 程序中打印一些输出。 当我用cc编译时,我得到这个错误: "whoisclient.c", line 70: argument #1 is incompatible with p
当涉及到这个问题时,我担心字节顺序。也许我想多了我要担心的事情。 我的代码的输入是一个看起来像这样的数据包: 我收到了一个包含一些字节的网络数据包。如果我知道 in_addr 所在的字节数组中的索引(
我正在尝试了解 IN_ADDR 中的 S_un .这是我的 IP 为 127.0.0.1 时的输出: 关于类型的信息: S_un_b An IPv4 address formatted as four
#include #include #include #include int main() { uint32_t ip = 0; printf("%s\n",inet_ntoa(*(stru
下面的转换工作正常,但是当我有 IPV6 时如何处理? sockaddr foo; in_addr_t ip_address = ((sockaddr_in)foo).sin_addr.s_addr;
我需要将结构sockaddr 中的套接字地址转换为结构in_addr。我试图了解 IP 如何存储在这些结构中: struct sockaddr { u_short sa_family;
我在linux(ubuntu 12.04 linux kernel 3.12.17)中写了下面的代码,比较成功,但是当我用eclipse移动android中的代码,并与ndk比较时,它显示错误:分配时
我正在使用 Linux 进行编译。在 struct ip(对于 IPv4)中,当我尝试将值作为 ip1.ip_dst = 0xffffffff; 时,出现以下错误: error: incompatib
我正在将一些 Windows 代码移植到 Mac。我遇到过一些使用 in_addr 类型的代码,并在此处找到了 Windows 实现的文档:http://msdn.microsoft.com/en-u
我是一名优秀的程序员,十分优秀!