Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | moved sockaddr_in inside the meta-cond |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
0776ca44d802afe0852f50437edf82f9 |
User & Date: | aldo 2016-12-10 19:00:00 |
Context
2016-12-11
| ||
13:55 | new posix funcs. dup fork, improved wait-for-pid check-in: 00d9573880 user: aldo tags: trunk | |
2016-12-10
| ||
19:00 | moved sockaddr_in inside the meta-cond check-in: 0776ca44d8 user: aldo tags: trunk | |
18:57 | added server support to socket.sls check-in: 82bf686062 user: aldo tags: trunk | |
Changes
Changes to socket.sls.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
...
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
(define-ftype sockaddr_un (struct (sun_family sa_family_t) (sun_data (array 108 char)))) (define-ftype in_addr_t unsigned-32) (define-ftype in_addr (struct (s_addr in_addr_t))) (define INADDR_ANY 0) ] [else (error 'socket.sls "unsupported machine-type ~a" (machine-type))]) ;; WARNING- here the size of sin_zero should be calculated on your machine as: #;(import (c-eval)) #;(parameterize ([c-eval-includes '("stdio.h" "sys/socket.h" "netinet/in.h")]) (c-eval-printf "%d" "sizeof(struct sockaddr_in) - (sizeof (sa_family_t) - sizeof(in_port_t) - sizeof(in_addr_t))")) ;; in my case (a6le) -> 20 (define-ftype sockaddr_in (struct (sin_family sa_family_t) (sin_port in_port_t) (sin_addr in_addr) (sin_zero (array 20 unsigned-8)))) (define (socket domain type type-flags protocol) (define socket* (foreign-procedure "socket" (int int int) int)) (let ([r (socket* (socket-domain domain) (logior (socket-type type) (apply socket-type-flag type-flags)) protocol)]) (when (< r 0) ................................................................................ (connect/inet sock hostname port) (put-bytevector sock (string->utf8 (format #f "GET ~a HTTP/1.1\r\nHost: ~a\r\nConnection: Close\r\n\r\n" q hostname))) (flush-output-port sock) (do ([c (get-u8 sock) (get-u8 sock)] [l '() (cons c l)]) ((eof-object? c) (utf8->string (apply bytevector (reverse l)))))) (substring (http-get "scheme.com" 80 "/tspl4/intro.html") 200) ;; server (import (socket)) (define sock (socket 'inet 'stream '() 0)) (bind/inet sock 'any 8001) (listen sock 10) (define clisock (accept sock)) (define (read-all sock) (do ([c (get-u8 sock) (get-u8 sock)] [l '() (cons c l)]) ((eof-object? c) (utf8->string (apply bytevector (reverse l)))))) (read-all clisock) |# |
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
...
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
(define-ftype sockaddr_un (struct (sun_family sa_family_t) (sun_data (array 108 char)))) (define-ftype in_addr_t unsigned-32) (define-ftype in_addr (struct (s_addr in_addr_t))) ;; WARNING- here the size of sin_zero should be calculated on your machine as: #;(import (c-eval)) #;(parameterize ([c-eval-includes '("stdio.h" "sys/socket.h" "netinet/in.h")]) (c-eval-printf "%d" "sizeof(struct sockaddr_in) - (sizeof (sa_family_t) - sizeof(in_port_t) - sizeof(in_addr_t))")) ;; in my case (a6le) -> 20 (define-ftype sockaddr_in (struct (sin_family sa_family_t) (sin_port in_port_t) (sin_addr in_addr) (sin_zero (array 20 unsigned-8)))) (define INADDR_ANY 0) ] [else (error 'socket.sls "unsupported machine-type ~a" (machine-type))]) (define (socket domain type type-flags protocol) (define socket* (foreign-procedure "socket" (int int int) int)) (let ([r (socket* (socket-domain domain) (logior (socket-type type) (apply socket-type-flag type-flags)) protocol)]) (when (< r 0) ................................................................................ (connect/inet sock hostname port) (put-bytevector sock (string->utf8 (format #f "GET ~a HTTP/1.1\r\nHost: ~a\r\nConnection: Close\r\n\r\n" q hostname))) (flush-output-port sock) (do ([c (get-u8 sock) (get-u8 sock)] [l '() (cons c l)]) ((eof-object? c) (utf8->string (apply bytevector (reverse l)))))) (substring (http-get "scheme.com" 80 "/tspl4/intro.html") 0 200) ;; server (import (socket)) (define sock (socket 'inet 'stream '() 0)) (bind/inet sock 'any 8001) (listen sock 10) (define clisock (accept sock)) (define (read-all sock) (do ([c (get-u8 sock) (get-u8 sock)] [l '() (cons c l)]) ((eof-object? c) (utf8->string (apply bytevector (reverse l)))))) (read-all clisock) |# |