2011-01-31 43 views
0

我需要使用Socket交替發送和接收字節[]。這個怎麼做 ? 什麼包裝使用? 這是好還是我能做到這一點的更快捷的方法使用Socket交替地發送和接收字節[]

public boolean SendMessage(byte[] data){ 
     try{ 
      socket = new Socket(ipAddress, port); 
      OutputStream socketOutputStream = (OutputStream) socket.getOutputStream(); 
      socketOutputStream.write(data); 
      socket.close(); 
      return true; 
     } 
     catch(Exception exc){ 
      System.err.println(exc.getStackTrace()); 
     } 
     return false; 
    } 

這個功能我調用函數接收字節的電話​​後,再次發送=>接收等。有更快的方法來做到這一點?

+0

作爲備註:方法名稱不應以大寫字符開頭。它可能看起來像一個類名,但事實並非如此。請參閱「Java(TM)編程語言代碼約定」中的[「命名約定」](http://www.oracle.com/technetwork/java/codeconventions-135099.html#367) – Progman 2011-01-31 13:55:52

回答

1

使用相同的套接字進行讀寫,只需將兩個應用程序同步,以便一個應用程序在其他應用程序寫入時進行讀取,反之亦然。

0

而不是每次創建一個新的套接字發送/接收,然後關閉它,你應該使用相同的套接字。

說,創建兩個線程。一個作爲SenderThread,另一個作爲ReceiverThread。 SenderThread創建一個套接字,然後獲取outputstream,並且您可以通過一個標誌來指示它是否應該運行。

Eg: while (running){ 

在ReceiverThread中應該做同樣的事情。創建套接字和輸入流。然後運行while循環。

在while循環中,您可以提供將數據寫入/讀取數據流的邏輯。

使用等待並通知,以便線程和諧運行。