Obrigado Mario e Jeronimo pelas dicas. O exemplo agora funciona perfeitamente.
Só para o caso de outros novatos em Chicken (como eu sou agora)
precisarem, aqui vai a lista de passos que usei para executar o
exemplo (eu uso Ubuntu 9.10):
0 - instale a extensão udp do chiken:
sudo chicken-install udp
1 - crie um arquivo, que no meu caso chamei de exemplo.scm, com o
conteúdo abaixo:
(use udp)
(define s (udp-open-socket))
(udp-bind! s #f 0)
(udp-connect! s "localhost" 13) ; daytime service
(udp-send s "\n")
(receive (n data from-host from-port) (udp-recvfrom s 64)
(print* n " bytes from " from-host ":" from-port ": " data))
(udp-close-socket s)
2 - Abra o serviço daytime:
2.1 - Instale o xinetd:
sudo apt-get install xinetd
2.2 - Abra o arquivo /etc/xinetd.d/daytime em algum editor de sua
preferência. Aqui vai o exemplo em emacs:
sudo emacs /etc/xinetd.d/daytime
2.3 - Na terceira linha abaixo daquela com o comentário # This is the
udp version,
substitua a opção
disable = yes
por
disable = no
2.4 - Salve o arquivo e saia do editor.
2.5 - Reinicie o serviço:
sudo invoke-rc.d xinetd reload
3 - Execute a linha abaixo:
csi exemplo.scm
e obterás, após as linhas de inicialização do Chicken, algo como
26 bytes from 127.0.0.1:13: 27 APR 2010 15:23:22 BRT
Espero não ter chovido no molhado.
Alex
2010/4/27 Mario Domenech Goulart <[email protected]>:
> Alô Alex
>
> On Tue, 27 Apr 2010 14:36:46 -0300 Alexsandro Soares <[email protected]>
> wrote:
>
>> Tentei seguir o exemplo dado no arquivo udp.scm e obtive o seguinte erro:
>>
>> ----------------------------------------------------------------------
>> CHICKEN
>> (c)2008-2010 The Chicken Team
>> (c)2000-2007 Felix L. Winkelmann
>> Version 4.4.0
>> linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
>> compiled 2010-04-27 on quadri (Linux)
>>
>> #;1> (require 'udp)
>> ; loading /usr/local/chicken-4.4.0/lib/chicken/5/udp.so ...
>> #;2> (define s (udp-open-socket))
>>
>> Error: unbound variable: udp-open-socket
>>
>> Call history:
>>
>> <syntax> (define s (udp-open-socket))
>> <syntax> (##core#set! s (udp-open-socket))
>> <syntax> (udp-open-socket)
>> <eval> (udp-open-socket) <--
>> ------------------------------------------------------------------------
>>
>> O que eu fiz de errado?
>
> O exemplo está errado. Esta extensão deve ter sido portada da versão 3
> do compilador para a versão 4, e o exemplo não foi modificado.
>
> Tenta
>
> (use udp)
>
> em vez de
>
> (require 'udp)
>
> Pela cara do REPL que colocaste na mensagem, aparentemente estás
> usando-o "na pureza". Recomendo a instalação da extensão readline e a
> inclusão do seguinte no teu arquivo ~/.csirc:
>
> (use readline)
> (current-input-port (make-gnu-readline-port "csi> "))
> (gnu-history-install-file-manager
> (string-append (or (getenv "HOME") ".") "/.csi.history"))
>
> Deve ajudar na edição de código no REPL. Outra alternativa é usar o
> REPL dentro do Emacs, caso uses Emacs.
>
> Mario
> --
> http://parenteses.org/mario
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lisp-br" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/lisp-br?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/lisp-br?hl=en.