JAVA套接字编程无限循环

时间:2013-11-15 10:40:06

标签: java sockets serversocket

这是我的套接字编程代码......

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;
}

程序继续在无限循环中输入,即使输入“bye”也没有响应。我认为主要问题在于Server.accept()似乎无法正常工作。什么可能是错的?

1 个答案:

答案 0 :(得分:0)

更改客户端代码

line = r.readLine();

line = con.readLine();