ServerSocket
objects you create will use their accept()
method to connect to a client.
public Socket accept() throws IOException
There are no getInputStream()
or getOutputStream()
methods for ServerSocket.
Instead you use accept()
to return a Socket object, and then call its
getInputStream()
or getOutputStream()
methods.For example,
try {
ServerSocket ss = new ServerSocket(2345);
Socket s = ss.accept();
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("Hello There!");
pw.println("Goodbye now.);
s.close();
}
catch (IOException e) {
System.err.println(e);
}
Notice in this example, I closed the Socket s
, not the ServerSocket ss
.
ss
is still bound to port 2345. You get a new socket for each connection
but it's easy to reuse the server socket. For example, the next code fragment
repeatedly accepts connections:
try {
ServerSocket ss = new ServerSocket(2345);
while (true) {
Socket s = ss.accept();
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("Hello There!");
pw.println("Goodbye now.);
s.close();
}
}
catch (IOException e) {
System.err.println(e);
}