GnuSmalltalkUsersGuide:AdditionalChapter6 1
- Sockets.AbstractSocket
Sockets.AbstractSocket
네임스페이스 Sockets에 정의됨
슈퍼클래스: Stream
범주: 소켓-스트림
- 해당 클래스는 클라이언트 현장의 소켓을 모델링한다. 소켓은 개념적으로 파일 처리와 비슷한 네트워크 통신을 위한 TCP/IP 종단점(endpoint)이다.
해당 클래스는 요청 시 버퍼링과 블로킹(blocking)만 책임진다. AbstractSocketImpl 의 서브클래스에 해당하는 기본 소켓 구현 객체를 사용한다. 이것은 FileDescriptor 내에서 소켓과 관계가 없는 메서드를 숨길 뿐만 아니라 여러 주소 체계(address families)에서 요구하는 구현의 미묘한 차이와 상관없이 버퍼링을 구현하기도 한다. 추소 체계 클래스(SocketAddress의 서브클래스)는 소켓 구현 객체의 공장 역할을 한다.
Sockets.AbstractSocket 클래스: 기본값
defaultAddressClass
사용될 기본 주소 체계를 응답하라. 라이브러리에서는 주소 체계가 SocketAddress의 서브클래스에 의해 표현되는데 기본적으로는 IPAddress에 해당한다.
defaultAddressClass: class
사용될 기본 주소 체계를 설정하라. 라이브러리에서는 주소 체계가 SocketAddress의 서브클래스에 의해 표현되는데 기본적으로는 IPAddress에 해당한다.
defaultImplementationClassFor: aSocketAddressClass
기본 구현 클래스를 응답하라. 서브클래스에 따라 이는 주어진 어드레스 클래스의 기본 스트림 소켓 구현 클래스가 되기도 하고, 기본 데이터그램 소켓 구현 클래스가 되기도 한다.
Sockets.AbstractSocket 클래스: 인스턴스 생성
new
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
new: implementation
수신자의 새 인스턴스를 응답하되 객체가 'implementation' 매개변수로서 전달한 내용을 기본 레이어로 사용하라; 객체는 아마도 일종의 AbstractSocketImple가 될 것이다.
new: implClass addressClass: addressClass
수신자의 새 인스턴스를 응답하되 'implementationClass'의 새 인스턴스를 기본 레이어로 이용하고 'addressClass'의 프로토콜 체계를 이용하라.
Sockets.AbstractSocket 클래스: 시간 만료된(timed-out) 연산
checkPeriod
데이터가 준비되어 있지 않고 연결이 여전히 개방된 (밀리초) 경우 소켓 폴(socket poll) 사이에 흐르는 시간을 응답하라.
checkPeriod: anInteger
데이터가 준비되어 있지 않고 연결이 여전히 개방된 (밀리초) 경우 소켓 폴(socket poll) 사이에 흐르는 시간을 설정하라.
timeout
데이터(아직 이용 불가) 요청과 연결이 끊긴 것으로 간주되는 순간 (밀리초) 사이에 흐르는 시간을 응답하라.
timeout: anInteger
데이터(아직 이용 불가) 요청과 연결이 끊긴 것으로 간주되는 순간 (밀리초) 사이에 흐르는 시간을 응답하라.
Sockets.AbstractSocket 클래스: 잘 알려진 포트
defaultPortAt: protocol
주어진 서비스(고수준 프로토콜)에 (기본적으로) 사용되는 포트를 응답하라.
defaultPortAt: protocol ifAbsent: port
주어진 서비스(고수준 프로토콜)에 (기본적으로) 사용되는 포트를 응답하고, 어떤 것도 등록되지 않은 경우 명시된 포트를 응답하라.
defaultPortAt: protocol put: port
주어진 포트를 'protocol'이 명시한 서비스로 연관시켜라.
portCmdServer
rsh daemon이 듣는 포트를 응답하라.
portDNS
DNS가 듣는 포트를 응답하라.
portDayTime
TOD 서비스가 듣는 포트를 응답하라.
portDiscard
DISCARD 서비스가 듣는 포트를 응답하라.
portEcho
ECHO 서비스가 듣는 포트를 응답하라.
portExecServer
exec 서버가 듣는 포트를 응답하라.
portFTP
FTP daemon이 듣는 포트를 응답하라.
portFinger
finger daemon이 듣는 포트를 응답하라.
portGopher
Gopher daemon이 듣는 포트를 응답하라.
portHTTP
http daemon이 듣는 포트를 응답하라.
portLoginServer
rlogin daemon이 듣는 포트를 응답하라.
portNNTP
nntp daemon이 듣는 포트를 응답하라.
portNetStat
NETSTAT service가 듣는 포트를 응답하라.
portPOP3
pop3 daemon이 듣는 포트를 응답하라.
portReserved
중요(privileged) 프로세스로 예약(reserved)된 마지막 포트를 응답하라.
portSMTP
SMTP daemon이 듣는 포트를 응답하라.
portSSH
SSH daemon이 듣는 포트를 응답하라.
portSystat
SYSTAT service가 듣는 포트를 응답하라.
portTelnet
TELNET daemon이 듣는 포트를 응답하라.
portTimeServer
타임 서버가 듣는 포트를 응답하라.
portWhois
WHOIS daemon이 듣는 포트를 응답하라.
Sockets.AbstractSocket: 접근하기
address
이해관계가 같은 IP 주소를 응답하라 (서브클래스 내 정의에 따라 로컬 또는 원격 주소).
available
소켓에 이용 가능한 데이터가 존재하는지 응답하라. #canRead와 같이 이전 기종과의 호환성을 위해 존재한다.
canRead
소켓에 이용 가능한 데이터가 존재하는지 응답하라.
canWrite
소켓의 쓰기 버퍼에 여유 공간이 있는지 응답하라.
close
수신자가 표현하는 소켓을 닫아라.
flush
수신자가 사용하는 버퍼는 모두 비워라.
isOpen
수신자와 원격 종단점 간 연결이 아직 존재하는지(alive) 응답하라.
isPeerAlive
피어 원격 머신(peer remote machine)과 연결이 아직 유효한지 응답하라.
localAddress
소켓의 로컬 IP 주소를 응답하라.
localPort
소켓의 로컬 IP 포트를 응답하라.
port
이해관계가 같은 IP 포트를 응답하라 (서브클래스 내 정의에 따라 로컬 또는 원격 종단점)
remoteAddress
소켓의 원격 종단점에 대한 IP 주소를 응답하라.
remotePort
소켓의 원격 종단점에 대한 IP 포트를 응답하라.
Sockets.AbstractSocket: 인쇄하기
printOn: aStream
수신자의 표현을 aStream 상에 인쇄하라.
Sockets.AbstractSocket: 소켓 옵션
soLinger
소켓이 신뢰가 가는 전달을 약속하지만 닫힐 때 인정되지 않은/전송되지 않은 패킷이 있는 경우 소켓에게 허용되는 대기 시간을 초로 응답하고, 패킷이 정상적이거나 파기된 경우 nil을 응답하라.
soLinger: linger
소켓이 신뢰가 가는 전달을 약속하지만 닫힐 때 인정되지 않은/전송되지 않은 패킷이 있는 경우 소켓에게 허용되는 대기 시간을 초로 설정하라.
soLingerOff
소켓이 신뢰가 가는 전달을 약속할지라도 그것이 닫힐 때 인정되지 않은/전송되지 않은 패킷이 있는 경우 정상적으로 처리될 것인지 파기될 것인지를 명시하라.
species
'String'를 응답하라.
Sockets.AbstractSocket: 스트림 프로토콜
atEnd
기본값으로(by default) 연결이 여전히 개방되었는지 응답하라.
next
소켓으로부터 다른 문자를 읽고, 연결이 끊긴 (dead) 경우 실패한다.
next: n putAll: aCollection startingAt: pos
소켓에 'char'를 쓰고, 연결이 끊긴 경우 실패한다. SIGPIPE 신호는 시스템에 의해 자동으로 잡히고 간과된다.
nextPut: char
소켓에 'char'를 쓰고, 연결이 끊긴 경우 실패한다. SIGPIPE 신호는 시스템에 의해 자동으로 잡히고 간과된다.
Sockets.AbstractSocket: 검사하기
isExternalStream
수신자가 파일과 소켓 중 어느 것을 스트리밍하는지 응답하라.