2015-11-18 42 views
0

我不知道很多有關緩衝區的讀者,但我的在它應該閱讀什麼建議插座4,溝通的BufferedReader

import java.io.*; 
import java.net.*; 

public class Host 
{ 

public static void main(String args[])throws Exception 
{ 
    ServerSocket ss = new ServerSocket(5001); 
    Socket s=new Socket("127.0.0.1",5001); 
    s=ss.accept(); 

    PrintWriter writer = new PrintWriter(s.getOutputStream(), true); 

    writer.write("Time"); 
    writer.println("time"); 

    BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream())); 

    String test =reader.readLine(); 
    System.out.println(test); 
    s.close(); 
    ss.close(); 
} 

}

+0

對於澄清它掛起的線是String test = reader.readLine(); –

回答

1

對等未發送線路或線路掛斷關閉插座。原因:

Socket s=new Socket("127.0.0.1",5001); 

在這裏,您正在爲自己創建一個連接。

s=ss.accept(); 

在這裏,你扔掉的是Socket並接受一個新的,這就是您的另一端,你剛剛扔掉的連接端。

String test =reader.readLine(); 

在這裏,您正試圖讀取它永遠不能抵達的同行的線路,因爲同行是你自己,你已經扔掉了Socket.

你不需要你的時候初始化任何變量把它分配到下一行。它應該是:

Socket s = ss.accept(); 
+0

我遇到的問題是現在它掛在Socket = ss.accept();行 –

+0

它正在等待客戶端連接。這就是它應該做的,而不是問題。 – EJP

+0

你的代碼是一個服務器。它需要一個客戶端。這就是它正在等待的。你寫過嗎?如果沒有,現在就開始吧。或者使用'telnet'。 – EJP