Cara, mto boa sua pergunta
focalize em entender sockets && IPC
Inter-Process Communication - Part II LG #105
minha resposta pra pergunta especifica seria: não só rola, como a comunicação é full-duplex, no modelo cliente-servidor.
Olá pessoal,
Quando um arquivo do tipo socket é criado no UNIX, é possível um processo local se comunicar com um processo remoto (um programa que está rodando em outro computador).
Alguém sabe me dizer se posso utilizar esse mesmo arquivo do tipo socket criado localmente para outras aplicações também (considerando que a anterior ja foi finalizada) ?
Deixe-me explicar melhor: processo A se criou um arquivo de socket e o processo B se conectou a esse socket. Então o processo A e B foram encerrados, e o socket ainda está lá. É possível um processo C aproveitar esse socket para se comunicar com D ? Acredito que o arquivo será sobrescrito, e um novo socket será criado, correto?
Minha dúvida principal é: quando o processo A criou localmente o arquivo de socket, quando B se conectar ao endereço IP e à porta em que roda A (num PC remoto), então tudo o que A escrever no arquivo de socket local será transmitido para B? De forma transparente?
Ixi...será que alguém vai entender o que eu escreví? =P
Qualquer dúvida me perguntem que eu tento ser mais claro.
Abraço
Cara, mto boa sua pergunta
focalize em entender sockets && IPC
Inter-Process Communication - Part II LG #105
minha resposta pra pergunta especifica seria: não só rola, como a comunicação é full-duplex, no modelo cliente-servidor.
---
MATARAM KENNEDY, CERTO? VEJAM SEU
DISCURSO ACERCA DE SOCIEDADES SECRETAS
- - http://youtu.be/RfeFSzB8mqw --
---
MELHOR DISCURSO QUE JÁ VI, CHARLIE CHAPLIN
http://www.youtube.com/watch?v=sGpCds0e-kg
(HQ) http://www.redhat.com/v/magazine/ogg/truthhappens.ogg
Olá, só para complementar procure o Livro: Programação de Rede UNIX - API para soquetes de rede.
Ele contém as APis e suas formas de contrutividade, e, você poderá tirar proveito de muitas das informações.
É melhor lê-lo que tentar discursar sobre sem nunca tê-lo visto.
Além de que pode-se baixar os códigos do site do Autor e compilá-los no kernel 2.6xx do Linux, já que foram elaborados para rodar no 2.4xx. Se quiser eu os já tenho compilados pois, já li o dito cujo do livro.
Amplexos!
"Se eu não for por mim, quem será por mim?
e se eu não tomar conta de mim, quem sou eu? E se não fôr agora, quando será?"
sensacional essa dica...
Outra coisa, as vezes não é socket que você vai precisar.
Só com 2 named pipes, dá pra fazer comunicação full-duplex também no mesmo host, se o problema não envolver máquinas diferentes.
Introduction to Interprocess Communication Using Named Pipes
Procure também o canivete suiço de redes: netcat ( nc ) e o pacote netpipes ; serão ferramentas úteis pra testar e até mesmo pra se virar com um simples shell script.
---
MATARAM KENNEDY, CERTO? VEJAM SEU
DISCURSO ACERCA DE SOCIEDADES SECRETAS
- - http://youtu.be/RfeFSzB8mqw --
---
MELHOR DISCURSO QUE JÁ VI, CHARLIE CHAPLIN
http://www.youtube.com/watch?v=sGpCds0e-kg
(HQ) http://www.redhat.com/v/magazine/ogg/truthhappens.ogg
Olá,
Obrigado pela dica do livro J. Augusto. Irei pesquisar.
Guzpido acho que Named Pipes são apenas para arquivos locais do file system, não sendo possível fazer uso deles para comunicação remota. Pra isso existem os sockets não é?
Entretanto não sei se o que eu quero fazer é possível, pois um socket local criado com a estrutura de endereço sun_address (AF_UNIX) "aponta" para um arquivo no file system do mesmo jeito. Para um processo remoto poder ler/escrever nele seria necessário uma estrutura de endereço do tipo sin_address (AF_INET), que contém IP, porta, etc.
O que eu queria é um canal para uma aplicação em Java criar um arquivo local enquanto outro processo remoto recebe esses dados que estão sendo gravados. Para a aplicação Java ela pensaria que está escrevendo em um arquivo simples, enquanto que o processo remoto estaria recebendo dados.
Obrigado pela ajuda!
Jean
se um dos dois processos termina, sinto frustar suas expectativas mais a conexão vai parar pelo sinal broken pipe, agora se aproveitar de um socket à partir de um canal ativo, acho que dá sim.
Pena que você está usando java caso contrário indicaria uma tentativa com sockets netlink do linux.
Segue uma prévia:
Kernel Korner - Why and How to Use Netlink Socket
Acho que atenderiam seu requisito.
There are currently 1 users browsing this thread. (0 members and 1 guests)