Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NoSuchElementFoundException While Receiving Data from Server

public class cli
{
    public static void main(String args[]) throws IOException
    {
        int no,rec;
        Scanner sc = new Scanner(System.in);
        Socket s = new Socket("127.0.0.1", 1400);
        Scanner sc1 = new Scanner(s.getInputStream());

        System.out.println("Enter any number");
        no = sc.nextInt();
        PrintStream ps = new PrintStream(s.getOutputStream());
        ps.println(no);

        rec = sc1.nextInt();
        System.out.println("Receive number is " + rec);
    }
}

I am sending a number to server and getting a number that is multiple of the number sent, but the problem I am facing is here: the rec=sc1.nextInt() statement gives me NoSuchElementFoundException. What am I doing wrong? Thanks.


Server code:

public class Server {
 public static void main(String args[]) throws IOException {
  ServerSocket ss = new ServerSocket(1400);
  System.out.println("Waiting ");
  Socket s1 = ss.accept();
  Scanner sc = new Scanner(s1.getInputStream());
  int a = sc.nextInt();
  int temp = 2 * a;
  PrintWriter ps = new PrintWriter(s1.getOutputStream());
  ps.write(temp);
  ps.flush();
  System.out.println("Got and sent Sucessfull " + temp);
  ss.close();
 }
}
like image 895
Talha Malik Avatar asked Nov 26 '25 22:11

Talha Malik


1 Answers

The problem is that you are not writing a number to the server's output, but a character with the 2*a code.

int temp = 2 * a;
PrintWriter ps = new PrintWriter(s1.getOutputStream());
ps.write(temp);

Here invoking write(temp) writes the character with the temp code to the output. For example, if a was 16, then temp is 32, so writing this to the PrintWriter actually writes a space character. If you want to write the number as a string, do this:

ps.write(Integer.toString(temp));
like image 111
Gergely Kőrössy Avatar answered Nov 29 '25 13:11

Gergely Kőrössy



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!