Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 510
aayani Avatar asked Mar 01 '26 07:03

aayani


1 Answers

Change client side code

line = r.readLine();

to

line = con.readLine();
like image 66
Sarjit Delivala Avatar answered Mar 03 '26 23:03

Sarjit Delivala



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!