我尝试使用Android NDK包装器创建socket
,将文件描述符传递给Java以与recv
包装器一起使用。目标用户不应要求单个用户。 recv
电话不会收到任何数据。为什么呢?
没有连接就无法读取TCP套接字,因为它们需要顺序性。也没有收到UDP数据包。当然,RAW插座没有成功制造。我的代码比餐馆的垃圾箱有更多的错误,我打电话给shutdown
而不是close
......不知道为什么。这是愚人节,一旦我意识到自己是个白痴并浪费人们的时间,我通常会删除问题。但今天我对这个问题有一个赏金,所以我想我会稍微重温这个想法并发布更好的代码。如果您仍然感兴趣,请稍后再回来查看。
答案 0 :(得分:0)
Android不支持从未连接的套接字读取数据。
TCP 不支持从未连接的套接字读取或写入它们。您的套接字类型为SOCK_STREAM,
,您在其上调用shutdown()
,因此它必须是TCP套接字。
NB:
shutdown()
并未关闭FD。您还必须致电close().
recv()
返回-1并不一定意味着'套接字关闭'。您需要查看errno
的值来确定它的含义。
您的标题' Java Native Socket Not Persistent'与你的问题无关。