2012-11-29 3 views
1

"socket of lisp"12 장과 13 장에서 "lisp의 땅"에서 배우는 동안. lispbox를 사용하므로 소켓을 설치해야합니다. 마지막으로 usocket을 찾았습니다. 이것은 웹 서버를 bulid하기 위해 usocket을 사용하는 방법에 대한 샘플입니다. (; usocket 유도체 클래스) lisp src of webserver.lisp

  • 스트림

    (defun serve (request-handler) 
        "serve as a web server,used to handle request 
        like 'http://127.0.0.1:8080/greeting'" 
    (let ((socket (usocket:socket-listen "0.0.0.0" 8080 :reuse-address t))) 
    (unwind-protect 
        (loop (with-open-stream (stream 
              (usocket:socket-stream 
                 (usocket:socket-accept socket))) 
          (let* ((url (parse-url (read-line stream))) 
            (path (car url)) 
            (header (get-header stream)) 
            (params (append (cdr url) 
                (get-content-params stream header))) 
            (*standard-output* stream)) 
           (funcall request-handler path header params)))) 
        (usocket:socket-close socket)))) 
    

    원점 http://landoflisp.com/webserver.lisp

    (defun serve (request-handler) 
    (let ((socket (socket-server 8080))) 
    (unwind-protect 
        (loop (with-open-stream (stream (socket-accept socket)) 
          (let* ((url (parse-url (read-line stream))) 
            (path (car url)) 
            (header (get-header stream)) 
            (params (append (cdr url) 
                (get-content-params stream header))) 
            (*standard-output* stream)) 
           (funcall request-handler path header params)))) 
        (socket-server-close socket)))) 
    
  • 답변

    0

    API 정의

    • usocket (클래스)
    • 스트림 usocket 함수를 "서브" -server-usocket (클래스, usocket 유도체)
    • '숙주'는 벡터화 IP 또는 점선 IP 주소의 문자열 표현 소켓 연결 호스트 포트 & 핵심 요소 형 [활성/연결 소켓을 생성 할 (함수)를 소켓 연결 또는 는 DNS 시스템
    • 소켓 투 리슨 (기능) 수동/청취 소켓을 생성하는]의 조회를위한 호스트 소켓 청취 호스트 포트를 & '호스트'
    • 상기와 동일한 정의를 갖는다 키 reuseaddress 잔고 소자 형
    • socket-accept (방법) [활성/연결된 소켓을 만들려면] socket-acce pt 소켓 & 키 요소 유형 은 청취/수동 소켓 에서 파생 된 연결된 소켓을 반환합니다 (서버 쪽).
    • 소켓 클로즈 (방법) 소켓 클로즈 소켓 여기서 소켓 이전에 반환 된 소켓
    • 소켓 (usocket 슬롯 접근) 내부/구현 정의 소켓 표현 소켓 스트림
    • (usocket 슬롯 접근) , 소켓 스트림 소켓 반환 값은 일반 스트림 인터페이스를 만족합니다.