我可以使用Android NDK制作以太网嗅探器吗?

时间:2014-03-30 06:48:15

标签: android sockets android-ndk

我尝试使用Android NDK包装器创建socket,将文件描述符传递给Java以与recv包装器一起使用。目标用户不应要求单个用户。 recv电话不会收到任何数据。为什么呢?

没有连接就无法读取TCP套接字,因为它们需要顺序性。也没有收到UDP数据包。当然,RAW插座没有成功制造。我的代码比餐馆的垃圾箱有更多的错误,我打电话给shutdown而不是close ......不知道为什么。这是愚人节,一旦我意识到自己是个白痴并浪费人们的时间,我通常会删除问题。但今天我对这个问题有一个赏金,所以我想我会稍微重温这个想法并发布更好的代码。如果您仍然感兴趣,请稍后再回来查看。

1 个答案:

答案 0 :(得分:0)

  

Android不支持从未连接的套接字读取数据。

TCP 不支持从未连接的套接字读取或写入它们。您的套接字类型为SOCK_STREAM,,您在其上调用shutdown(),因此它必须是TCP套接字。

NB:

  1. shutdown()并未关闭FD。您还必须致电close().

  2. recv()返回-1并不一定意味着'套接字关闭'。您需要查看errno的值来确定它的含义。

  3. 您的标题' Java Native Socket Not Persistent'与你的问题无关。