2013-11-15 77 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();