2013-04-17 260 views
0

我想創建一個程序來模擬連接到網絡的設備並通過特定端口發送信號。通過網絡發送數據

設備連接到網絡並通過端口發送數據。在服務器(或計算機)上,我已經從Lantronix運行CPR Manager v.4.3.0.1,將IP:PORT關聯到計算機上的虛擬COM端口。我有一個監聽COM端口並執行操作的Java程序,這對設備非常有用。

我嘗試使用Socket類進行連接寫一個Java應用程序,但它是聯合國的成功,對心肺復甦方面,它只是記錄在執行第一行一個斷開:

Socket socket = new Socket("192.168.1.160", 8888); 

我也嘗試使用UDP方法,沒有消息記錄什麼。

任何幫助將不勝感激。另外,如果Java沒有可行的解決方案,那麼其他任何語言都可以。

編輯:

這裏就是我試圖發送數據

public static void main(String[] args){ 
    try{ 
     Socket socket = new Socket("192.168.1.160", 8888); 

     if(socket.isConnected()){ 
      System.out.println("It is connected."); 
      socket.setKeepAlive(true); 
      System.out.println(socket.isBound()); 
     }else{ 
      System.out.println("It is not connected."); 
     } 
     PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
     BufferedReader in = 
       new BufferedReader(
         new InputStreamReader(socket.getInputStream())); 
     String msg = "32"; 
     for(int i = 0; i < 50; i++){ 
      out.println(msg); 
     } 

     //Receive a reversed message 
     msg = in.readLine(); 
     System.out.println("Server : " + msg); 

    }catch(Exception ioe){ 
     ioe.printStackTrace(); 
    } 
    } 

由於Java代碼。

更新

我與設備的一些人取得了聯繫,他們給我看,有以通過TCP/IP連接發送有ASCII命令協議直接交流的方式。這將允許在每個級別進行更深入的控制。

所以,現在我正在編寫一個可以使用這些協議進行通信的java程序。 因爲我不再使用通信端口,所以我試圖模擬波特率,數據位和停止位。當我有一些工作時,我會發布。

感謝您的幫助。

回答

0

如果您正在使用的產品正在將流量轉發到COM端口,您應該在COM端口上監聽而不是在網絡連接上。套接字用於網絡流量。一個快速的谷歌搜索結果給我。 How to send data to COM PORT using JAVA?

也許這會有幫助嗎?

+0

感謝您的迴應,是的,我可以最definitly做到這一點,但它不是我正在尋找。我需要讓應用程序通過網絡發送信號,這樣我讀取com端口的應用程序就不會知道信號之間的差異。這樣做的目標是發送一個恆定的信號以便記錄,這將有助於確定ip:port連接是否斷開連接(因爲com端口仍然可用) –

+0

哦,這樣做更有意義。這個信號發送者也是接收者嗎?或者他們兩個不同的盒子?根據你的回答和問題,它們似乎是同一個盒子。 – Joshua

+0

它絕對是接收者,但它不一定是發送者。我認爲,如果信號得到正確的發送和解釋正確,它應該無關緊要,但是我再次不能100%確定。 –