[Cascavel-pm] Re: IO::Socket e IO::Select
Ednardo Lobo
ednardo em elobo.cjb.net
Quinta Janeiro 9 17:33:21 CST 2003
On Wed, Jan 08, 2003 at 10:04:49AM -0200, Luiz Gonzaga Pinto Jr wrote:
> Olá, pessoal,
>
Oi, tudo bom?
> Sou novo na lista. Espero poder contribuir com ela sempre com minha
> pequena experiência em programação Perl. Porém, meus conhecimentos em
> perl são bem resumidos, isto é, meus programas têm um formato bem
> "arroz com feijão", padrão das primeiras versões do perl.
>
Há sempre espaço para qualquer tipo de contribuição.
O importante é contribuir de alguma forma!
> Tenho uma grande dúvida. Estou querendo desenvolver um servidor de
> chat utilizando conexões por sockets. Existem esses dois módulos do
> perl (IO::Socket::INET e IO::Select), aos quais na Net apenas achei os
> documentos padrões da perldoc para aprender. As sintaxes deles até não
> é o problema. O que não consegui foi como aplicá-los num servidor de
> chat e nos clientes. "O que uso onde?".
>
> Se alguém souber de alguma documentação sobre eles especificamente
> para geração de servidores chat, me avisem, ok?
>
Se o que você pretende fazer, é criar um servidor e cliente CHAT,
aconselho você dar uma olhada nas primitivas em C das seguintes funções:
socket, connect, bind, listen, accept. Elas se relacionam da seguinte
forma, dependendo do protocolo utilizado:
# SOCKET INTERFACE
- TCP
Servidor
+----------+
+-- | socket() |
| +----------+
|
+-> +--------+
| bind() |
+-- +--------+ Cliente
|
+-> +----------+ +----------+
| listen() | | socket() | --+
+-- +----------+ +----------+ |
| |
+-> +----------+ |
| accept() | |
+-- +----------+ |
| |
| +-----------+ <-+
| <------------------------ | connect() |
| +-----------+ --+
| |
+-> +--------+ +---------+ <-+
| read() | <-------------- | write() |
+-- +--------+ +---------+ --+
| |
| +---------+ +--------+ |
+-> | write() | --------------> | read() | <-+
+---------+ +--------+
- UDP
Servidor Cliente
+----------+ +----------+
+-- | socket() | | socket() | --+
| +----------+ +----------+ |
| |
+-> +--------+ +--------+ <-+
| bind() | | bind() |
+-- +--------+ +--------+ --+
| |
+-> +------------+ +----------+ <-+
| recvfrom() | <--------- | sendto() |
+-- +------------+ +----------+ --+
| |
| +----------+ +------------+ |
+-> | sendto() | ---------> | recvfrom() | <-+
+----------+ +------------+
O entendimento dessas primitivas, ajudará bastante na compreensão do
funcionamento da lib `IO::Socket::INET'.
Boa sorte!!
> Obrigado, por hora.
>
Disponha!
--
Ednardo Lobo - www.elobo.cjb.net
--
taxidermist, n.:
A man who mounts animals.
Mais detalhes sobre a lista de discussão Cascavel-pm