예제 소스
(use-modules (ice-9 rdelim))
(let ((s (socket PF_INET SOCK_STREAM 0)))
(connect s AF_INET (car (vector-ref (gethost "www.egloos.com") 4)) 80)
;; (connect s AF_INET (inet-aton "127.0.0.1") 80)
(display "GET / HTTP/1.0\r\n\r\n" s)
(do ((line (read-line s) (read-line s)))
((eof-object? line))
(display line)
(newline)))
------
(use-modules (ice-9 rdelim))
(define *http-default-port* 80)
(define *http-default-version* "HTTP/1.0")
(define *http-default-url* "/")
;; HEAD / HTTP/1.0
;; example : (http-head "www.yahoo.com")
(define (http-head host . rest) ;; port, url, version
(if (null? host) #f
(let* ((s (socket PF_INET SOCK_STREAM 0))
(http-method "HEAD")
(port (if (null? rest) *http-default-port* (car rest)))
(url (if (null? rest) *http-default-url*
(if (null? (cdr rest)) *http-default-url*
(cadr rest))))
(ver (if (null? rest) *http-default-version*
(if (null? (cdr rest)) *http-default-version*
(if (null? (cddr rest)) *http-default-version*
(caddr rest)))))
(str (string-append http-method " " url " " ver "\r\n\r\n")))
(connect s AF_INET (car (vector-ref (gethost host) 4)) port)
(display str s)
(do ((line (read-line s) (read-line s)))
((eof-object? line))
(display line)
(newline)))))
;; GET / HTTP/1.0
;; example : (http-get "www.yahoo.com")
(define (http-get host . rest) ;; port, url, version
(if (null? host) #f
(let* ((s (socket PF_INET SOCK_STREAM 0))
(http-method "GET")
(port (if (null? rest) *http-default-port* (car rest)))
(url (if (null? rest) *http-default-url*
(if (null? (cdr rest)) *http-default-url*
(cadr rest))))
(ver (if (null? rest) *http-default-version*
(if (null? (cdr rest)) *http-default-version*
(if (null? (cddr rest)) *http-default-version*
(caddr rest)))))
(str (string-append http-method " " url " " ver "\r\n\r\n")))
(connect s AF_INET (car (vector-ref (gethost host) 4)) port)
(display str s)
(do ((line (read-line s) (read-line s)))
((eof-object? line))
(display line)
(newline)))))

덧글
fullc0de 2007/06/21 14:17 # 답글
ㅎㅎ 학교 다닐때 인공지능 시간에 스킴 프로그래밍 해본 후로 오랜만에 느껴보는 코드네요 ㅎㅎ