2

這應該很簡單,很簡單,但是我很難用它。是否有支持Telnet RFC2217(通過網絡連接與COM端口通信)的Java客戶端?


問題
我在找一個開源項目,在Java中,將使用RFC2217協議進行通信。我發現並不缺乏Java RFC2217終端服務器,但我需要一個客戶端。如果所有這些人都在寫服務器,那麼有人必須寫一個客戶端!對?我只是在java找不到一個


語境
我們有一個硬件(SeaLINK+16 Ultra)的該真實物理地連接到一打串行設備和接受TCP的網絡連接來控制它們。該設備與具有虛擬COM端口的服務器聯網,我們的應用程序使用該虛擬COM端口與十幾臺設備進行通信。

基本上,我們的服務器最終將網絡數據發送到此SeaLINK設備,此設備將TCP流量轉換爲COM數據並通過串口將其發送到其連接的串行設備。服務器和SeaLINK設備使用RFC2217中指定的協議進行通信。

需要發送到這些串行設備的命令非常簡單(Cisco IOS)。如「啓用」,「寫入內存」,「重新加載」等短字符串。

問題是,我們的服務器上啓用的虛擬COM端口需要驅動程序,這是非常麻煩的安裝在Linux中,平臺。另外,我們的整個應用程序都是用Java編寫的,所以如果我們能夠找到一個可以「說RFC2217」的Java網絡包,我們可以很快解決我們的問題,我們的應用程序也不需要與驅動程序捆綁在一起。


摘要
所有我需要做的是「包裝」這些命令到符合RFC2217符合TCP數據包。應該有一個java客戶端在那裏,你提供一個命令字符串,它打開一個套接字並以符合RFC2217的方式傳輸你的角色。

含義,我不必處理安裝驅動程序或本地使用虛擬COM端口。所有我所要做的就是沿着線運行代碼:

RFC2217Client magicJavaClient; 

magicJavaClient.setServer("192.168.40.5"); 
magicJavaClient.setPort(4162); 
magicJavaClient.connect(); 

magicJavaClient.send("enable"); 
magicJavaClient.send("write memory");  
magicJavaClient.close(); 

哎呀,我甚至定居創建本地虛擬COM端口的東西 - 只要它是所有Java。像這樣的COM Redirector正是我所需要的,但它不在Java中。預先感謝任何和所有建議!

更新
NVTCom似乎是基於java的RFC2217客戶端的我正在尋找的類型,但它是如此糟糕記錄,它幾乎無法使用。那裏有其他客戶嗎?我們甚至會考慮商業解決方案。

回答

2
+0

謝謝!看起來它可能正是我所需要的。它的記錄很差,但源代碼看起來沒問題。我必須等到下週我回到辦公室才能真正測試一下。謝謝。 – gMale 2010-07-03 01:23:21

+0

昨天給了這個試試,它沒有奏效。它抱怨說服務器不符合RFC2217,這幾乎肯定是不正確的。文檔和錯誤處理都很差,因此解決問題的唯一方法是單步執行代碼。目前尚不清楚問題是什麼。有其他的Java客戶端嗎? – gMale 2010-07-07 14:45:46

+0

@gmale這是我所知道的唯一一個。我想我看到了一些商業的。你可能想要走這條路,至少你會得到支持。 – 2010-07-07 14:52:42

0

每個人都在談論天氣,但沒有人做任何事情。 - 馬克吐溫

我發現自己在同一條船尋找Java RFC 2217客戶端庫,並沒有發現任何有用的東西。所以我決定試一試。

看看我的新jvser項目,讓我知道如果你發現任何錯誤或想加入努力。

相關問題