【发布时间】:2016-01-06 16:41:13
【问题描述】:
我有一个用c 编写的应用程序(充当服务器),它正在侦听一个原始套接字,使用这个套接字描述符:socket(AF_UNIX, SOCK_RAW, 0);。 0 表示IPPROTO_IP
我想用java(作为客户端)编写一个代码来向这个正在监听的原始套接字发送一个ip数据包。现在我读到 java 需要一个 3rd 方库来管理原始套接字。人们推荐junixsocket 和juds,所以我想我会使用其中一个。
Junixsocket 做了这样的事情来定义一个原始套接字:
File socketFile = new File("/path/to/your/socket");
AFUNIXSocket sock = AFUNIXSocket.newInstance();
sock.connect(new AFUNIXSocketAddress(socketFile));
所以问题是:
是否有可能使这两个应用程序通过这个原始套接字相互通信?在 java 中,您需要建立套接字文件名和路径,而在 c 中,这不是强制性的。我的 c 代码没有指定套接字文件名或路径,所以我不知道如何让它们在同一个套接字上通信。我如何确保它们都在同一个原始套接字上发送/接收?所有这些交流都只发生在本地!
谢谢
【问题讨论】:
-
socketfilename 是什么意思?您的意思是 URL 吗,例如创建套接字客户端所需的
localhost:8080或ip-address:port。 -
我编辑了问题以回答您的评论
标签: java c raw-sockets