简体   繁体   中英

JAVA Socket Programing infinite loop

This is my code for Socket Programming...

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

Code for Server:

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

The program keeps on taking input in an infinite loop and giving no response even when I type "bye". I think the main problem lies in Server.accept() that seems to be not working. What might be wrong?

Change client side code

line = r.readLine();

to

line = con.readLine();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM