2013-04-25 35 views
0

所以我想讓服務器坐下來等待來自客戶端的連接。客戶端發送一些字符串,服務器根據接收到的內容做出一些操作。現在我想要發生的是客戶端通過一些命令發送請求返回數據的命令,並讓服務器獲得所需內容並將字符串發回。根據命令向客戶端發送字符串JAVA

沒什麼大不了的?出於某種原因,我不能得到它的工作,我最好的猜測是它沒有正確關閉套接字。我無法弄清楚爲什麼它不會或我做錯了什麼。

客戶

String data = ""; 

    DataOutputStream outToServer = null; 
    BufferedReader input; 

    try { 
     outToServer = new DataOutputStream(clientSocket.getOutputStream());   
     outToServer.writeBytes("GETDATA"); 
     outToServer.flush(); 


     input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
     data = input.readLine(); 
     Log.d("ANSWER: ", data); 
     input.close(); 


    } catch (IOException e) { 
     Log.d("Error: ", e.toString()); 


    } 

服務器

ServerSocket listeningSocket = new ServerSocket(9008); 
     BufferedReader fromClient ; 
     PrintStream os; 


     while(true) { 
      Socket clientSocket = listeningSocket.accept(); 
      ServerConnection clientConnection = new ServerConnection(clientSocket); 
      os = new PrintStream(clientSocket.getOutputStream()); 
      fromClient= new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
      if(fromClient.readLine().equals("GETDATA")){ 
       os.println("DATA"); 
       os.flush(); 
       clientSocket.wait(); 
       clientSocket.close(); 
      } 
      else{ 
      clientConnection.run(); 
      } 
     } 

任何想法?

+0

是什麼問題,什麼時候happend你運行代碼 – aymankoo 2013-04-25 04:08:43

+0

什麼是ServerConnection – aymankoo 2013-04-25 04:13:15

+0

什麼都沒有發生,它不記錄任何事情,成功或異常。 – Dandrews 2013-04-25 04:27:10

回答

0

這裏是你的錯誤

outToServer.writeBytes("GETDATA"); 

正確的代碼是

outToServer.writeBytes("GETDATA\n"); 

如您使用的ReadLine,你應該發送帶有換行符全線

相關問題