I have a ServerSocket
and looking for help.
I want to identify the request from the client of type InputStream
or OutputStream
. I am stuck with this point and looking forward to your help
ServerSocket servsock = new ServerSocket(13267);
while (true) {
System.out.println("Waiting...");
Socket sock = servsock.accept();
System.out.println("Accepted connection : " + sock);
InputStream is = sock.getInputStream();
new FileServer().receiveFile(is);
sock.close();
}
Please tell me how can I put it in a conditional statement to provide the further execution
From the server side, the Socket
(created by ServerSocket
when a client connection is accepted) allows to read(receive) stream from the client with the input stream and to write(send) stream to the client with the output stream.
From the client side, it works with the same logic.
The Socket
allows to read(receive) stream from the server with the input stream and to write(send) stream to the server with the output stream.
In your actual code :
Socket sock = servsock.accept();
InputStream is = sock.getInputStream();
Here you get the input stream of the server.
With it you can read message from the client.
For example to read a byte sent by the client (of course to read lines, using a more featured reader such as BufferedReader
is much better):
int b = is.read();
To write to the client one byte, the server can do :
OutputStream os = sock.getOutputStream();
os.write(oneByte);
Here, same remark as for InputStream
: OutputStream
has only raw methods to write bytes.
Using a specific subclass could be better according to your requirements.
You have very good materials and examples on the Oracle site : http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html