Anders
Anders

Reputation: 729

Socket programming. Program creating 2 connections instead of just 1

I am building a client/server application, for some socket programming exercise.

Below is construction + run method of my server class. The server awaits a respond from the client, which in this case is just a string.

The problem is that it seems to make two connections when the client respond. From my print statements i can see that all the code in the run method is run twice, and then the first line once again.

Why would dateServer.accept(); accept a connection for only one client request?

public Server() throws Exception {
    dateServer = new ServerSocket(3001);
    System.out.println("Server lytter på port 3000.");
    this.start();
}


 public void run() {
    while (true) {
        try {
            System.out.println("waiting for client to request");
            Socket client = dateServer.accept();
            System.out.println("connection established");
            Connect c = new Connect(client);
            clients.add(c);
            this.sleep(5000);
        } catch (Exception e) {
        }
    }
}

--EDIT-- Client code that talks to server (Message is a simple "wrapper" class"):

System.out.println("Write to server:");
    String name = scanner.nextLine();
    Message message = new Message(name, null);
    oos.writeObject(message);
    oos.flush();

Upvotes: 1

Views: 59

Answers (1)

user207421
user207421

Reputation: 310869

If all the prints happen twice there must have been two connections. The first line prints again after that because you're in a loop.

NB:

  1. Never ignore exceptions: especially IOExceptions.
  2. The sleep is completely pointless. accept() will block while there are no incoming connections. You are literally wasting time here.

Upvotes: 1

Related Questions