簡體   English   中英

從Linux上的Java程序連接到路由器

[英]Connecting to a router from a java program on Linux

我正在開發通過連接到路由器開始的Java應用程序。 這是代碼:

try {
    Service service = new Service(new JIPImpl(new PacketHandlerIPv6()));    
    JOtionPane.showMessageDialog(null," Service Created " );
    JenNetIPNetwork network = service.createNetwork(new InetSocketAddress("fd04:bd3:80e8:2:215:8d00:32:54ff", 1873));
    Collection<Node> my_nodes = network.discoverNodes();

} catch (JipException e) {

    JOptionPane.showMessageDialog(null,"Couldn't connect To The Router, Error: "+ e.getMessage() );
    }

我得到的是第一個消息:“服務已創建”。 然后未執行service.create並引發了異常,該異常提示消息:無法連接至路由器,錯誤:超時。

值得注意的是:完全相同的jar文件可以在Windows 7(最初開發的位置)上正常運行,當我嘗試在Linux上運行jar文件時,才遇到該問題。

當我在android上構建相同的程序時,我遇到了類似的問題,並且在清單中添加了Internet許可后,該問題就解決了。 是否應該添加類似的權限才能在Linux上使用Internet?

看來您的Linux機器無法到達路由器和端口1873。您可以ping通路由器嗎?

ping6 fd04:bd3:80e8:2:215:8d00:32:54ff

您可以到達路由器的1873端口嗎?

telnet fd04:bd3:80e8:2:215:8d00:32:54ff 1873

對於這最后一個,您應該得到如下響應:

Trying fd04:bd3:80e8:2:215:8d00:32:54ff...
Connected to fd04:bd3:80e8:2:215:8d00:32:54ff.
Escape character is '^]'.

否則,可能是由於您的防火牆設置或網絡設置導致路由器+端口無法訪問。

實際上ping6僅用於非常基本的健全性檢查,並不是很重要。 例如,ICMP數據包可能被阻止,導致失敗。 真正重要的部分是使telnet正常工作,以確認您的計算機可以同時到達主機端口。 如果該telnet有效,則Java程序也應該有效。

UPDATE

當您發現自己時,沒有啟用ipv6。 您可以使用modprod ipv6啟用它,這將加載ipv6內核模塊。

下次再說一遍,您正在開發樹莓派和OS(rasbian?),因為這可能會給很多人敲響警鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM