2013-12-23 31 views
0

我試過以下代碼發送文件和目錄列表,從服務器到客戶端。服務器正在從客戶端接收,但我不知道服務器是否不發送結果或客戶端不接受它。請幫我out.ThanksJava套接字客戶端和服務器

服務器端: -

package without.thread; 


import java.io.BufferedOutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.InputStreamReader; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.PrintWriter; 
import static java.rmi.Naming.list; 
import java.util.ArrayList; 
import static java.util.Collections.list; 
import java.util.logging.Level; 
import java.util.logging.Logger; 



public class SerTest { 
    public static int reads,red; 
    public static void main(String[] args) 
    { 

      try 
        { 
         System.out.print("i m ready, call my client"); 
      ServerSocket serverSocket = new ServerSocket(18789); 
         while(true){ 
      Socket clientSocket = serverSocket.accept(); 
         System.out.println(clientSocket+"1"); 
         // outk=new PrintWriter(clientSocket.getOutputStream(),true); 

         BufferedReader bufferedReader; 
     bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 


       } 

回答

0

從我可以看到你在客戶端上做readLine(),而在服務器上做outqw.write()。從服務器發送的字符串中沒有行尾字符,因此客戶端將永遠無法完成readLine。執行outqw.println()或將"\n"添加到您發送的任何內容的末尾。這就是說,很難用大量註釋掉的東西來導航未格式化的代碼,所以問題可能是其他問題。

+0

嘿。精彩和非常感謝..我花了整整兩天在這個和我全職的時間..但沒有得到答案,非常感謝。你可以給我提供你的郵件地址嗎?所以我可以問你進一步懷疑,如果有..我的[email protected] ....非常感謝... – CodeEatingMyMind

0

在向服務器/客戶端發送內容時,請嘗試手動刷新流。

+0

感謝您的幫助,(我得到了使用println的輸出) – CodeEatingMyMind

+0

上述方法使用同樣的思路。 ''\ n「'在'.write()'中觸發'.flush()'。正如你所說的,你使用'.println(「something」)''輸出'something \ n'。這與使用'.write()+ .flush()'是一樣的,但是你需要手動控制。似乎你正在玩一些客戶端/服務器代碼,所以我猜你會發現這有用:) – Bumbolt

相關問題