comunicação entre processos baseada em troca de mensagens através de sockets sobre ip

20
Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP Alcides Calsavara

Upload: hamlet

Post on 12-Jan-2016

22 views

Category:

Documents


3 download

DESCRIPTION

Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP. Alcides Calsavara. Sockets. Basic TCP/IP mechanism Three access facilities: connection-oriented: Socket , ServerSocket datagram-oriented: DatagramSocket MulticastSocket raw IP data: SocketImpl. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Comunicação entre processos baseada em troca de mensagens

através de sockets sobre IP

Alcides Calsavara

Page 2: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Sockets

• Basic TCP/IP mechanism• Three access facilities:

– connection-oriented:•Socket, ServerSocket

– datagram-oriented:•DatagramSocket•MulticastSocket

– raw IP data:•SocketImpl

Page 3: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection-oriented sockets

• Built over TCP/IP

• Reliable services:• no data losses in the network

• data ordering is insured

• Trade-off: slower than datagrams

• Data streams can be created

• Asymmetric behaviors• client side Vs. server side

Page 4: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: client actions

1. Open the communication socket

import java.io.* ; // streams

import java.net.* ; // sockets

Socket clientSocket = new Socket

(“www.javasoft.com”, 80) ;

Page 5: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: client actions

2. Get socket input/output streams:

DataInputStream inbound = new

DataInputStream

( clientSocket.getInputStream( ) ) ;

DataOutputStream outbound = new

DataOutputStream

( clientSocket.getOutputStream( ) ) ;

Page 6: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: client actions

3. Use the input/output streams

outbound.writeInt( 3 );

outbound.writeUTF( “Hello” );

int k = inbound.readInt( );

String s = inbound.readUTF() ;

...

Page 7: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: client actions

4. Close in/out streams

inbound.close () ;

outbound.close () ;

5. Close the socket

clientSocket.close() ;

Page 8: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: server actions

1. Create server-side socket:

ServerSocket serverSocket = new ServerSocket (80, 5) ;

2. Wait for client connections:

Socket clientSocket = serverSocket.accept () ;

Page 9: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: server actions

3. Create client in/out streams:

DataInputStream inbound = new

DataInputStream

( clientSocket.getInputStream( ) ) ;

DataOutputStream outbound = new

DataOutputStream

( clientSocket.getOutputStream( ) ) ;

Page 10: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: server actions

4. Dialog with the client:

int k = inbound.readInt( );

String s = inbound.readUTF() ;

outbound.writeInt( 3 );

outbound.writeUTF( “Hello” );

Page 11: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Connection: server actions

5. Close streams and client socket:

inbound.close () ;outbound.close () ;clientSocket.close() ;

6. Close server-side socket:

serverSocket.close() ;

Page 12: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram sockets

• Based on UDP/IP

• unreliable service:• messages can be lost

• messages ordering is not guaranteed

• but it’s much faster the TCP/IP

• Each message is a “datagram”:• [sender, receiver, contents]

Page 13: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, sender side

1. Client socket creation:

// sender socket doesn’t need

// a special port number

DatagramSocket clientSocket =

new DatagramSocket () ;

Page 14: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, sender side

2. Build and send the datagram:

InetAddress addr=InetAddress.getByName (“www.javasoft.com”) ;String toSend = “That’s my question!” ;byte[] buffer = toSend.getBytes() ;

// datagram to receiver’s port 4545DatagramPacket question = new

DatagramPacket (buffer, buffer.length, addr, 4545) ;clientSocket.send (question) ;

Page 15: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, sender side

3. Receive and open the answer:

DatagramPacket answer = new DatagramPacket (new byte[512], 512);clientSocket.receive (answer) ;

System.out.println (answer.getData() + “\n” + answer.getLength() + “\n” + answer.getAddress() + “\n” + answer.getPort() ) ;

Page 16: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, sender side

4. Close the client socket:

clientSocket.close() ;

Page 17: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, receiver side

1. Create a server socket:

// listens on port 4545

DatagramSocket serverSocket =

new DatagramSocket (4545) ;

Page 18: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, receiver side

2. Receive a datagram:

DatagramPacket question = new

DatagramPacket (new byte[512], 512) ;

serverSocket.receive (question) ;

Page 19: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, receiver side

3. Send the answer datagram:

String toSend = “That’s the answer !” ;byte[] buffer = toSend.getBytes() ;

DatagramPacket answer = new DatagramPacket (buffer, buffer.length,

question.getAddress(), // sender info question.getPort() ) ; // sender info

serverSocket.send (answer) ;

Page 20: Comunicação entre processos baseada em troca de mensagens através de sockets sobre IP

Datagram, receiver side

4. Close the server socket:

serverSocket.close() ;