Duvida em Implementacao SOCKETS

1. Duvida em Implementacao SOCKETS

leandro de almeida
leandroJapa

(usa Debian)

Enviado em 30/03/2010 - 17:40h

Boa tarde galera,tenho conhecimentos básicos sobre sockets e não consigo avançar no trabalho.Conheço os fundamentos sobre Bind,Listen,COnnect e accept,mas estou empacado.Vou passar a descrição dele aqui, espero que me ajudem pois ando desesperado.Muito Obrigado!!

.Esse projeto trata-se de uma aplicação distribuída onde um servidor tem a capacidade de solicitar aos clientes a ele conectados a execução de uma aplicação.
O servidor deve oferecer um “console” que permita ao administrador executar os seguintes comandos:
· List: Mostra todos os clientes conectados ao servidor.
· Execute <cliente> <aplicação>: Envia uma requisição ao <cliente> para que ele execute a
<aplicação>. O <cliente> é identificado por seu endereço IP e a <aplicação> pelo seu endereço
no sistema de arquivos do <cliente>.
· Show <cliente>: Mostra ao usuário todos os processos (requisitados pelo servidor) que estão
em execução no <cliente>. Para cada processo listado devem ser apresentados os percentuais
de uso de memória e CPU como também o PID (process ID) do processo.
· Kill <cliente> <pid>: Finaliza a execução do processo identificado por <pid> no <cliente>.
Características de Implementação
O servidor deve ser implementado de maneira que quando os comandos Execute e Kill forem
executados, a comunicação (síncrona) entre cliente e servidor ocorra por meio de uma conexão TCP/IP.
Quando um comando Execute for executado por um cliente é preciso que seja feito uso da primitiva
fork() para carregar o processo desejado. Após isso, deve ser retornado ao servidor o PID desse novo processo. Em uma requisição Kill o cliente deve finalizar a execução do processo identificado, também por meio da primitiva apropriada para tal função (veja exemplo no aula-rede). Deve ser retornada ao servidor uma mensagem identificando o sucesso ou falha na execução.As aplicações clientes devem enviar periodicamente para o servidor uma mensagem assíncrona (utilizando o protocolo UDP/IP) referente a cada processo executado por meio de requisição do usuário. Essa mensagem deve conter os percentuais de uso de CPU e memória do processo. Dessa forma, quando o usuário executar o comando “Show <cliente>” todas essas informações já estarão no servidor, dispensando a
comunicação com o cliente.Com o objetivo de garantir o correto processamento dos dados é preciso realizar a criação de um protocolo de aplicação (conforme visto em sala de aula) para realizar o tratamento do stream de dados do protocolo TCP.



  


2. Re: Duvida em Implementacao SOCKETS

Emerson Esteves
enssso

(usa KUbuntu)

Enviado em 02/04/2010 - 01:47h

Olha só, não entendi exatamente onde está sua dúvida, mas no exemplo abaixo o cara cria um serversocket onde é feito um fork para cada accept, dê uma olhada talvez ajude.

http://beej.us/guide/bgnet/output/html/multipage/clientserver.html#simpleserver

Nos exemplos abaixo, são usados 'select' para gerenciar vários descritores (estrutura que referencia o socket ou outro dispositivo). Com ele você sincroniza o recebimento de mensagens de vários processos em várias máquinas e também o envio de msg para vários processos em outras máquinas.

select com porta serial
http://www.linux.org/docs/ldp/howto/Serial-Programming-HOWTO/x115.html

select com socket
http://forum.soft32.com/linux2/select-UDP-socket-Linux-ftopict12773.html
http://www.tenouk.com/Module41.html

Nesse site tem um bom conjunto de manuais sobre c/c++ estilo man:
http://www.die.net/

Pesquise nele sobre select, fork, socket, bind, etc... acho que vai lhe ajudar.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts