Академический Документы
Профессиональный Документы
Культура Документы
Distributed Systems
l InetSocketAddress
l Represents a socket address over IP
l Essentially an IP address and a port
l For example 129.250.35.250 and port 80
SocketAddress
InetSocketAddress
l UDP
l Packet based
l Packets may be lost or reordered
l Efficient
l UDP
l Require high bandwidth, can accept loss or reordering
l Examples:
• Transmission of video/sound in real time
• Out of sequence or incomplete frames are just dropped
• Other more complex communication protocols
• Such as totally-ordered multicast using Lamport's logical clocks
"server port"
"server socket "
"server process"
4320
Server Machine
"server port"
"client port" "server socket "
"client socket "
"client proces "
"server process"
server port
server socket
"client port"
"client socket "
"client proces "
4320
client port
client socket server port
server socket
connection request
36243
4320
Client 1
56789 Server
Client 2
// End-less loop
while (true) {
// Server waits for a connection
Socket client = server.accept();
// A client connected
System.out.println("Client " + client.getInetAddress() + “connected.");
// Server receives bytes from client
...
l Examples
l Streams from/to a socket
l Streams from/to a file
l Streams from/to the console
Correct?
Socket stream
IP packets
Fabienne Boyer, Basics of Distributed Programming 23
Java Sockets and Streams
Correct?
import java.io.*;
...
while (true) {
l Addressing
l java.net.DatagramSocket
l Used for sending and receiving datagram packets
l Communication happens over UDP
l Send a DatagramPacket by calling send on a DatagramSocket
l Receive a DatagramPacket by calling receive on a DatagramSocket
// End-less loop
while (true) {
System.out.println("Waiting for client packet…");
byte[] buf = new byte[256;]
// Create a datagram packet
DatagramPacket packet = new DatagramPacket(buf, buf.length);
// Wait for a packet
serverSock.receive(packet);
l Addressing
// Multicast group
int groupPort = 5000;
InetAddress groupAddr = InetAddress.getName(“225.4.5.6”);
// When done, leave the multicast group and close the socket
sock.leaveGroup(groupAddr);
sock.close();
// Multicast group
int groupPort = 5000;
InetAddress groupAddr = InetAddress.getName(“225.4.5.6”);
36243 4320
server
server
while (true) {
receive(client_id,message);
extract(message, service_id, params);
results = do_service(service_id, params);
send(client_id, results);
}
server
l Advantages
l Strong isolation
l Real parallelism (also with kernel threads)
Process-based
l Drawbacks
l Heavy resources
server
response
response
Fabienne Boyer, Distributed Programming 47
Multi-threaded server – TCP-based
Program executed by thread thr:
Socket s;
s.receive(client_id,message);
response
Fabienne Boyer, Distributed Programming 48
Multi-threaded server (thread-pool)
server
main thread
client request
requests selection
request queue worker thread
worker thread
request
worker thread
request
processing
work_to_do processing
request
processing
response
49
Pool of threads:
Socket s;
while (true) {
while (true) {
s = work_to_do.get();
Socket s;
s.receive(client_id,message);
s = accept(client_id,message);
extract(message, service_id,
work_to_do.put(s);
params);
}
results = do_service(
service_id, params);
send(client_id, results);
close();
}
l Be careful, directly calling the run method does not create a
thread