2013-11-15 78 views
2

這是我的Socket編程代碼...JAVA編程插座無限循環

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

public class EchoClient 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      Socket s = new Socket("127.0.0.1",9999); 
      BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream())); 
      PrintWriter w = new PrintWriter(s.getOutputStream(),true); 
      BufferedReader con = new BufferedReader(new InputStreamReader(System.in)); 
      String line; 

      do 
      { 
       line = r.readLine(); 

       if (line != null) 
       { System.out.println(line); } 

       line = con.readLine(); 
       w.println(line); 
      } 
      while(!line.trim().equals("bye")); 
     } 

     catch(Exception err) 
     { System.err.println(err); } 
    } 
} 

代碼服務器:

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

public class EchoServer 
{ 
    public EchoServer(int portnum) 
    { 
     try 
     { server = new ServerSocket(portnum); } 

     catch(Exception err) 
     { System.out.println(err); } 
    } 

    public void serve() 
    { 
     try 
     { 
      while(true) 
      { 
       Socket client; 
       client = server.accept(); 

       BufferedReader r; 
       r = new BufferedReader(new InputStreamReader(client.getInputStream())); 

       PrintWriter w = new PrintWriter(client.getOutputStream(),true); 
       w.println("Welcome to Java EchoServer. Type 'bye' to close."); 

       String line; 

       do 
       { 
        line = r.readLine(); 

        if (line != null) 
        { w.println("Got: " + line); } 
       } 
       while(!line.trim().equals("bye")); 

       client.close(); 
      } 
     } 

     catch(Exception err) 
     { System.err.println(err); } 
    } 

    public static void main(String[] args) 
    { 
     EchoServer s = new EchoServer(9999); 
     s.serve(); 
    } 

    private ServerSocket server; 
} 

程序不斷採取在一個無限循環的輸入,並給予無反應即使我輸入「再見」。我認爲主要問題在於Server.accept()似乎不起作用。什麼可能是錯的?

+2

'127.0.0.1'是'localhost'。你確定有一臺服務器在999端口上運行嗎? –

+0

這個問題似乎是脫離主題,因爲它是關於基本網絡。 – Ingo

+0

你確定ServerSocket serverSocket = new ServerSocket(9999);在本地主機上運行。 – Prabhakaran

回答

0

更改客戶端代碼

line = r.readLine(); 

line = con.readLine();