2009-09-21 1 views
0

내가 듣고 포트가REBOL 셀프

처음 듣는 포트는 자기가 동일하지 않는 이유를 이해하지 않습니다 그래서 여전히 자체 인 객체입니다 Rebol Smallest Http Server in the World: why first wait listen-port?

포트에 대해 몇 주 전에이 질문을 객체 다음 위의 코드는

과 동일하지 않습니다 포트들을 반환 청취 포트를 기다린 첫 번째 포트를 듣고 자기와 같은 경우, 또는 왜 우리가

http-port: first wait listen-port 

필요합니까되는 포트를 듣고

http-port: wait listen-port 

?

답변

1

청취 포트는 포트입니다! 가치가 아니라 개체! 값. 항구! 객체로부터 파생 된 것으로 볼 수 있습니다! 데이터 유형 및 특수 목적을 가지고 있습니다. FIRST 동작 (다른 모든 동작! 값과 마찬가지로)은 다형성입니다.

개체를! 값은 그 개체 컨텍스트에 정의 된 단어 목록 (플러스 특별한 자체 참조 단어 '자기를) 반환 포트

foo: make object! [bar: 3] 
first foo 
== [self bar] 

! 값에 따라, FIRST는 포트에 따라 두 가지 다른 행동을합니다! 타입 :

  • 클라이언트 포트 : 그것은 포트 내부 핸들러에 PICK 동작 (제 1 포트 == 선택 포트)를 전송한다.

  • 서버 포트 : 새 연결 포트를 검색하기 위해 기본 C 소켓에 대한 ACCEPT 작업을 호출합니다! 클라이언트와의 통신을 허용합니다. 그래서

: 이벤트가 발생하면

wait listen-port 

는 청취 포트 값을 반환합니다.

http-port: first wait listen-port 

새 포트를 반환합니다! 값은 'http-port'에 의해 참조 된 클라이언트에 연결됩니다.

+0

새 포트를 지정하지 않습니다. 허용 된 소켓은 청취 소켓과 동일한 포트를 사용합니다. – EJP

+0

@ EJP 당신은'포트! 값 '은 Rebol을 의미하며 C 레벨 소켓이나 포트 번호가 아니라 높은 수준의 추상화입니다. 위의 코드에서'http-port'와'listen-port'는 사실상 두 개의 다른 포트입니다! 값. – DocKimbel