0

I created server and client classes to practice socket programming and when I try to run server class I get this error message. my java version is 8 and I'm using IntelliJ IDEA ultimate

 java.net.BindException: Address already in use: JVM_Bind
        at java.net.DualStackPlainSocketImpl.bind0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
        at java.net.ServerSocket.bind(ServerSocket.java:390)
        at java.net.ServerSocket.<init>(ServerSocket.java:252)
        at java.net.ServerSocket.<init>(ServerSocket.java:143)
        at simple_tcp.Server.<init>(Server.java:10)
        at simple_tcp.Server.main(Server.java:33)
    Class transformation time: 0.0110188s for 136 classes or 8.102058823529413E-5s per class

my Server.java class is

package simple_tcp;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public Server() throws IOException {
        ServerSocket server_socket=new ServerSocket(2020);//opening a new port
        System.out.println("port 2020 has been opened!");

        Socket socket=server_socket.accept();
        System.out.println("Client "+socket.getInetAddress()+" has connected");

        /////////////////////////////////////////

        BufferedReader in_socket=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out_socket=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);


        out_socket.println("Welcome");//send "welcome" to client
        String message=in_socket.readLine();
        System.out.println("Client says "+message);

        /////close socket
        socket.close();
        System.out.println("Socket is closed");
    }

    public static void main(String[] args) {
        try {
            new Server();


        }
        catch (Exception e){
            e.printStackTrace();

        }
    }
}

and Client.java class is

package simple_tcp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {

    public Client() throws  Exception{
        Socket socket=new Socket("localhost",2020);
        System.out.println("Successfull conection to server");
        BufferedReader in_socket=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out_socket=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);

        String message=in_socket.readLine();
        System.out.println("server says "+message);
        out_socket.println("Thanks");
      socket.close();
        System.out.println("socket closed");

    }

    public static void main(String[] args) {
        try {
            new Client();
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}

and I get the same error trying to run the Client.java class also can anyone help me to fix this error

tecs-x
  • 308
  • 3
  • 12
  • 1
    Did you try an other port? For example 8080. Maybe some other application uses the 2020 port. – Michał Kolenda Sep 30 '21 at 21:54
  • 2
    A common problem during server development is starting a second instance while the first is still running. Make sure that an previous runs of your program are killed. – erickson Oct 01 '21 at 00:27
  • @MichałKolenda changing the port solved my problem. thank you for your help – tecs-x Oct 01 '21 at 04:32

0 Answers0