asked on
// tcpServer.java by fpont 3/2000
// usage : java tcpServer <port number>.
// default port is 1500.
// connection to be closed by client.
// this server handles only 1 connection.
import java.net.*;
import java.io.*;
public class Serveur {
public static void main(String args[]) {
int port;
ServerSocket server_socket;
BufferedReader input;
try {
port = Integer.parseInt(args[0]);
}
catch (Exception e) {
System.out.println("port = 1500 (default)");
port = 1500;
}
try {
server_socket = new ServerSocket(port);
System.out.println("Server waiting for client on port " +
server_socket.getLocalPort());
// server infinite loop
while(true) {
Socket socket = server_socket.accept();
System.out.println("New connection accepted " +
socket.getInetAddress() +
":" + socket.getPort());
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// print received data
try {
while(true) {
String message = input.readLine();
if (message==null) break;
System.out.println(message);
}
}
catch (IOException e) {
System.out.println(e);
}
// connection closed by client
try {
socket.close();
System.out.println("Connection closed by client");
}
catch (IOException e) {
System.out.println(e);
}
}
}
catch (IOException e) {
System.out.println(e);
}
}
}
/*import java.io.*;
import java.net.*;
public class Serveur {
static final int port = 1500;
public static void main(String[] args) throws Exception {
ServerSocket s = new ServerSocket(port);
Socket soc = s.accept();
// Un BufferedReader permet de lire par ligne.
BufferedReader plec = new BufferedReader(
new InputStreamReader(soc.getInputStream())
);
// Un PrintWriter possède toutes les opérations print classiques.
// En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
PrintWriter pred = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(soc.getOutputStream())),
true);
while (true) {
String str = plec.readLine(); // lecture du message
if (str.equals("END")) break;
System.out.println("ECHO = " + str); // trace locale
pred.println(str); // renvoi d'un écho
}
plec.close();
pred.close();
soc.close();
}
}*/