2012-09-23 32 views
-1

我試圖在Java中使用Java套接字在2個程序之間進行通信。我想通過套接字發送一些字節作爲數據。那些字節是數據,它們的值可以是任何東西(因此可以是0並且可能是-1)。我試圖使用DataInputStream類來處理通信,並且工作正常,如果我在字節中沒有收到字節0,我試圖讀取,否則,它似乎阻塞在這個0字節並停止讀取。任何人會對這種情況發生的方式和原因有任何想法,以及關於如何解決這個問題的想法?謝謝 !收到0時發生Java套接字讀取問題

+0

請張貼一些代碼.. – Ruuhkis

+1

歡迎的StackOverflow請發表SSCCE(HTTP:// SSCCE。組織/)。 – Borgleader

+0

** DataInputStream **用於交換Java對象。你可以使用** InputStream **嗎? – pd40

回答

1

請保持它的簡單,

嘗試使用InputStream, InputStreamReader, BufferedReader, OutputStream, PrintWriter.

客戶端:

Socket s = new Socket(); 
s.connect(new InetSocketAddress("Server_IP",Port_no),TimeOut); 
// Let Timeout be 5000 

服務器端:

ServerSocket ss = new ServerSocket(Port_no); 
Socket incoming = ss.accept(); 

對於從套接字讀取:

InputStream is = s.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 

BufferedReader br = new BufferedReader(isr); 
boolean isDone = false; 

String s = new String(); 

while(!isDone && ((s=br.readLine())!=null)){ 

    System.out.println(s); // Printing on Console 

} 

用於寫入套接字

OutputStream os = s.getOuptStream(); 
PrintWriter pw = new PrintWriter(os) 

pw.println("Hello");