[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] How to convert an UDP socket to file descriptor
From: |
Alexsandro Soares |
Subject: |
[Chicken-users] How to convert an UDP socket to file descriptor |
Date: |
Thu, 29 Apr 2010 00:20:18 -0300 |
Hello,
I'm new in Chicken and I'm trying to write a small UDP client
using file-select. But i get the following error:
Error: (port->fileno) argument is not a port: 45691
Could someone help me with this problem?
Thanks in advance for any answer.
Alex
Here is my code
(define (udp-client server port)
(let ((s (udp-open-socket*)))
(begin
(udp-bind! s #f 0)
(udp-connect! s server port)
(udp-send s "\n")
(list s port))))
(define (message-loop sp)
(let* ((s (car sp))
(port (cadr sp))
(fd (port->fileno (udp-bound-port s))))
(let loop ((soc s)
(p port))
(let-values (((ok dontcare) (file-select (list fd) #f)))
(if (car ok)
(receive (n data from port) (udp-recvfrom soc 8192)
(begin
(processMsg n data from port)
(loop from port)))
(loop soc p))))))
(define (processMsg n data server port)
(print* n " bytes of " server ":" port "\n" data))
(define (execute)
(let ((sp (udp-client "localhost" 6000)))
(message-loop sp)))
- [Chicken-users] How to convert an UDP socket to file descriptor,
Alexsandro Soares <=