A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação distribuída e concorrente

Apresentações semelhantes


Apresentação em tema: "Programação distribuída e concorrente"— Transcrição da apresentação:

1 Programação distribuída e concorrente
Programando com sockets Análise do programa com sockets Encapsulando sockets com objetos Programação concorrente

2 Programando com sockets
servidor cliente IP+porta Criação do socket (bind Estabelecimento da conexão (accept) Comunicação (send, recv) IP+porta Stack TCP/IP

3 Programando com sockets
int listenfd, connfd; struct sockaddr_in servaddr; unsigned char buff[SIZE]; listenfd = socket(AF_INET, SOCK_STREAM, 0); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(ACTION_PORT); bind(listenfd, (const struct sockaddr*)&servaddr, sizeof(servaddr)); listen(listenfd, 1); for(;;) { connfd = accept(listenfd, NULL, NULL); do { //Recebe Comando if (recv(connfd, buff, sizeof(buff), MSG_WAITALL) == -1) break; //Executa na Planta printf("receive %u\n", buff[SIZE-1]); //Confirma Execucao if (send(connfd, buff, sizeof(buff), MSG_NOSIGNAL) == -1) break; } while (buff[0] == 0x01); printf("Fecha Conexao\n"); close(connfd); } printf("Fecha Socket\n"); close(listenfd);

4 Programando com sockets
Aspectos positivos Simplicidade “Transparência” de localização Aspectos negativos Comportamento imprevisível Foco na mensagem Replicação

5 Encapsulando sockets em objetos
Aspectos positivos Facilita a criação de múltiplas instâncias

6 Criação Socket - Cliente CLIENT SERVER
IPnumber Port in out Socket s DataInputStream S_in PrintStream S_out String, float,... bytes “Texto” S_in= new DataInputStream(s.getInputStream()) s=new Socket(IP_server, port) Class Client { Socket s; DataInputStream s_in; PrintStream s_out; } S_in.readLine(); S_out.Println(“Texto”); S_out = new PrintStream(s.getOutputStream()) S.close(); Suporte comunicação

7 Criação Socket - Server
CLIENT SERVER ss s IPnumber Port in out Socket s Server Socket ss=new ServerSocket(port); IPnumber Port in out Socket Socket s = ss.accept(); Suporte comunicação

8 S_out.println(“Msg1 do Client”); Comunicação usando Sockets
S_in.readLine(); “Msg1 do Client” S_out.println(“Msg1 do Client”); Comunicação usando Sockets “Resposta Server” S_out.println(“Resposta Server”) CLIENT S_in SERVER s s S_in PrintStream S_out ss S_out DataInputStream DataInputStream PrintStream Socket in out Server Socket in out IPnumber Port IPnumber Port Suporte comunicação

9 Programação concorrente
Threads vs. Processos vs. Múltiplos executáveis Ex: home banking

10 servidor IPnumber Port in out cliente1 cl1 Server Socket cl2 IPnumber Port in out cliente2 cl3 IPnumber Port in out client3

11 Java Tempo-Real Overviews David Holmes / Australia (link)
Corsaro / Univ. Washington (link) Wellings/Univ. Of York (link) Exemplo Cuco (link)

12 Java Tempo-Real RT-JVM disponíveis Mackinac JTime jRate Jamaica Perc
Ajile

13 Programação concorrente e distribuída
Thread de aquisição (periódica) Computador i Threads de atendimento a serviços de leitura

14 class CSensor { int endereco; protected: float valor_bruto, valor_engenharia; public: //Atributos e métodos públicos são acessíveis por todas as classes void amostrar(void); float ler(void); virtual void condicionar(void)=0; //A palavra 'Virtual' define condicionar como um método que deve ser //implementado nas classes derivadas. }; Thread cíclica que realiza a leitura do transdutor e chama a função condicionar Threads múltiplas para leitura do sensor (prioridade definida pelo cliente)


Carregar ppt "Programação distribuída e concorrente"

Apresentações semelhantes


Anúncios Google