Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
rseau
Java
Socket programming with TCP
Client must contact server When contacted by client,
server process must first be server TCP creates new
running socket for server process to
server must have created communicate with client
socket (door) that welcomes allows server to talk with
clients contact multiple clients
Client contacts server by: source port numbers
creating client-local TCP used to distinguish
socket clients (more in Chap 3)
specifying IP address, port
number of server process application viewpoint
When client creates socket: TCP provides reliable, in-order
client TCP establishes transfer of bytes (pipe)
connection to server TCP between client and server
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
H. Fauconnier M2-Internet Java 3
Stream jargon
keyboard monitor
A stream is a sequence of
characters that flow into
or out of a process.
inFromUser
input
stream
An input stream is Client
Process
attached to some input process
source for the process,
e.g., keyboard or socket.
An output stream is
attached to an output
inFromServer
outToServer
output input
source, e.g., monitor or stream stream
socket.
client
clientSocket
TCP
socket TCP
socket
sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
H. Fauconnier M2-Internet Java 7
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();
H. Fauconnier M2-Internet 11
Entres-sorties java
Streams
Output streams
Input streams
Filter streams
Readers et writer
Exemple:
OutputStreamWriter w = new
OutputStreamWriter( new
FileOutputStream("russe.txt",
"Cp1251"));
java.net.DatagramPacket
java.net.DatagramSocket
java.net.MulticastSocket
java.net.ServerSocket
javax.net.ssl.SSLServerSocket
java.net.Socket
javax.net.ssl.SSLSocket
java.net.SocketAddress (implements java.io.Serializable)
java.net.InetSocketAddress
try {
InetAddress moi = InetAddress.getLocalHost();
return( moi.getHostAddress());
} catch (UnknownHostException ex) {
return("Mon adresse est inconnue");
}
Java 1.5
public boolean isReachable(int timeout) throws
IOException
public boolean isReachable(NetworkInterface
interface, int ttl, int timeout) throws
IOException
IPV4 et IPV6:
public final class Inet4Address extends
InetAddress
public final class Inet6Address extends
InetAddress
Client
Classe Socket
(bind)
connect (mais en gnral par constructeur)
getInputStream, getOutputStream
close
TCP_NODELAY
SO_TIMEOUT
SO_LINGER
SO_SNDBUF
SO_RCVBUF
SO_KEEPALIVE
OOBINLINE
SO_REUSEADDR
try {
ServerSocket server = new
ServerSocket(0);
System.out.println("Le port obtenu est "
+ server.getLocalPort());
} catch (IOException ex) {
System.err.println(ex);
}
}
connection.close( );
}
try {
InetAddress ia =
InetAddress.getByName("www.liafa.jussieu.fr");
int port = 7;// existe-t-il?
DatagramPacket dp = new DatagramPacket(data,
data.length, ia, port);
}
catch (IOException ex)
}
} // end lancer
}
try {
BufferedReader userInput = new BufferedReader(new
InputStreamReader(System.in));
while (true) {
if (stopped) return;
String theLine = userInput.readLine();
if (theLine.equals(".")) break;
byte[] data = theLine.getBytes();
DatagramPacket output
= new DatagramPacket(data, data.length, server, port);
socket.send(output);
Thread.yield();
}
} // end try
catch (IOException ex) {System.err.println(ex); }
} // end run
}