【问题标题】:What is the integer value of AF_UNIX?AF_UNIX 的整数值是多少?
【发布时间】:2015-06-28 23:53:50
【问题描述】:

所以,我正在尝试编写一些 JNA 代码来使用 Unix 套接字,并且我正在尝试为套接字引用 AF_UNIX。我浏览了一些 gcc 包含的文件,但找不到任何东西。

【问题讨论】:

  • 就像 chrylis 所说,它可能与平台有关,但您可以通过让编译器为您输出它来找出它在特定平台上的含义here

标签: java c linux sockets unix


【解决方案1】:

它可能与平台相关,这就是您应该使用定义的原因。它应该在sys/socket.h

【讨论】:

  • 问题明确提到了JNA和Java,这意味着包含头文件不是一个选项。
  • @JesperE 如果您已经在调用本机代码,那真的很容易。例如,在 C 中,int get_AF_UNIX_value(){ return AF_UNIX;} 并从 Java 中调用它:public static final int AF_UNIX = get_AF_UNIX_value();,减去任何 JNI/JNA 名称修改。
  • 嗯,是的,但是 JNA 通常用于在您没有源代码和/或不想重建/修改它的地方直接调用本机代码。
  • 如果你想要一个更通用的解决方案来解决这个问题,那么 Jnaerator 可能会感兴趣:code.google.com/p/jnaerator
【解决方案2】:

在我的 Ubuntu 机器上,它在 /usr/include/x86_64-linux-gnu/bits/socket.h 中定义为 1。我没有在其他 Unix 源代码树中检查过,但我感觉它可能在大多数其他 Unix 方言中被定义为 1

【讨论】:

  • "我有一种感觉……" 嗯,不太好回答。
  • 我也在那里找到了,谢谢。对我来说也是一个。你知道我在哪里可以找到SOCK_STREAM 吗?我查看了那个文件和其他文件,没有运气。
  • 我在 sock_stream.h 或类似的东西中找到了它!谢谢!
  • @alk:别那么挑剔。我已经回答了这个问题。我只是添加了一个猜测,即该值在其他 Unix 方言上可能不同的可能性有多大。由于发帖者没有使用系统头文件的选项,这是相关信息。
  • 你是对的@JesperE。我没有像这样“看”你的答案,“感觉”可以被看作是一个明确的暗示,不要概括答案的第一句话。
猜你喜欢
  • 2011-06-11
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2022-01-13
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多