mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-15 17:07:34 +02:00
Adding sockaddr-port.
This commit is contained in:
parent
a3102c4c1e
commit
924352921a
4 changed files with 16 additions and 2 deletions
|
@ -11,7 +11,9 @@
|
|||
((not (or (eof-object? line) (equal? line "")))
|
||||
;; log the request to stdout
|
||||
(display "read: ") (write line)
|
||||
(display " from ") (display (sockaddr-name (address-info-address addr)))
|
||||
(display " from ")
|
||||
(display (sockaddr-name (address-info-address addr)))
|
||||
(display ":") (write (sockaddr-port (address-info-address addr)))
|
||||
(newline)
|
||||
;; write and flush the response
|
||||
(display line out)
|
||||
|
|
|
@ -40,6 +40,8 @@ sexp sexp_listen (sexp ctx, sexp self, sexp fileno, sexp backlog) {
|
|||
return (res == 0) ? SEXP_TRUE : SEXP_FALSE;
|
||||
}
|
||||
|
||||
/* Additional utilities. */
|
||||
|
||||
sexp sexp_sockaddr_name (sexp ctx, sexp self, struct sockaddr* addr) {
|
||||
char buf[20];
|
||||
struct sockaddr_in *sa = (struct sockaddr_in *)addr;
|
||||
|
@ -47,3 +49,8 @@ sexp sexp_sockaddr_name (sexp ctx, sexp self, struct sockaddr* addr) {
|
|||
sprintf(buf, "%d.%d.%d.%d", ptr[0], ptr[1], ptr[2], ptr[3]);
|
||||
return sexp_c_string(ctx, buf, -1);
|
||||
}
|
||||
|
||||
int sexp_sockaddr_port (sexp ctx, sexp self, struct sockaddr* addr) {
|
||||
struct sockaddr_in *sa = (struct sockaddr_in *)addr;
|
||||
return sa->sin_port;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
(define-library (chibi net)
|
||||
(export sockaddr? address-info? get-address-info make-address-info
|
||||
socket connect bind accept listen open-socket-pair
|
||||
sockaddr-name
|
||||
sockaddr-name sockaddr-port
|
||||
with-net-io open-net-io make-listener-socket
|
||||
address-info-family address-info-socket-type address-info-protocol
|
||||
address-info-address address-info-address-length address-info-next
|
||||
|
|
|
@ -61,6 +61,11 @@
|
|||
(define-c sexp (sockaddr-name "sexp_sockaddr_name")
|
||||
((value ctx sexp) (value self sexp) sockaddr))
|
||||
|
||||
;;> Return the port a sockaddr is connected on.
|
||||
|
||||
(define-c int (sockaddr-port "sexp_sockaddr_port")
|
||||
((value ctx sexp) (value self sexp) sockaddr))
|
||||
|
||||
(define-c-const int (address-family/unspecified "AF_UNSPEC"))
|
||||
(define-c-const int (address-family/unix "AF_UNIX"))
|
||||
(define-c-const int (address-family/inet "AF_INET"))
|
||||
|
|
Loading…
Add table
Reference in a new issue