2016-09-15 94 views
0

我想在客戶端和服務器之間做一個簡單的測驗。服務器發送一系列問題並等待來自客戶端的回覆。問題在於客戶端不會顯示來自服務器的數組,也不能接受任何輸入。服務器已經連接到客戶端,但客戶端保持空閒狀態。無法從客戶端套接字接收回路

服務器:

OutputStream o =sock.getOutputStream(); 
PrintWriter pw = new PrintWriter(o); 
InputStream is = sock.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
int i=0; 
while(i<10) 
{ 
pw.println(array[i]); 
String st = br.readLine(); 
System.out.println(st); 
i++; 
} 

客戶:

InputStream istream = sock.getInputStream(); 
BufferedReader content = new BufferedReader(new InputStreamReader(istream)); 
String str; 
OutputStream ostream=sock.getOutputStream(); 
PrintWriter pw = new PrintWriter(ostream) 
String ans; 
for(int j=0;j<10;j++) 
{ 
    str=content.readLine(); 
    System.out.println(str); 
    ans=sc.nextLine(); 
    pw.println(ans); 
} 
+0

客戶端是否顯示任何內容?你告訴我們什麼不會發生,但不會發生什麼。 –

回答

0

PrintWriter#println默認情況下不沖水文本到客戶端,所以你需要手動調用pw.flush()要確保每發送一次。

爲了讓println自動沖洗文本到客戶端使用PrintWriter(Writer out, boolean autoFlush)構造與autoFlush參數設置爲true,像

PrintWriter pw = new PrintWriter(o, true); 

因爲PrintWriter(OutputStream out)構造內部調用this(out, false);所以自動閃光被禁用printlnprintfformat方法。

+0

謝謝!我在服務器和客戶端啓用了自動刷新功能,現在它可以工作 – 0sync

0

PrintWriter默認不會刷新信息本身。 您應該在pw.println(ans)之後加上:pw.flush()或以這種方式創建您的作家:PrintWriter pw = new PrintWriter(o, true);

相關問題