|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.net.ServerSocket
public class ServerSocket
이 클래스는 서버 소켓을 구현합니다. 서버 소켓은, 네트워크 경유로 요구가 보내져 오는 것을 기다립니다. 이것은, 그 요구에 근거해 몇개의 조작을 실행합니다. 그 후, 경우에 따라서는 요구 바탕으로 결과를 돌려줍니다.
서버 소켓의 실제의 처리는,SocketImpl
클래스의 인스턴스에 의해 실행됩니다. 어플리케이션은, 소켓 구현을 작성하는 소켓 팩토리를 변경하는 것으로, 로컬 방화벽(fire wall)에 적절한 소켓을 작성하도록(듯이) 어플리케이션 자체를 구성할 수가 있습니다.
SocketImpl
,
setSocketFactory(java.net.SocketImplFactory)
,
ServerSocketChannel
생성자 의 개요 | |
---|---|
ServerSocket ()
안 바운드의 서버 소켓을 작성합니다. |
|
ServerSocket (int port)
지정된 포트에 바인드 된 서버 소켓을 작성합니다. |
|
ServerSocket (int port,
int backlog)
서버 소켓을 작성해, 지정된 로컬 포트 번호에 바인드 해, 지정된 백 로그를 설정합니다. |
|
ServerSocket (int port,
int backlog,
InetAddress bindAddr)
지정된 포트, 대기 백 로그, 및 바인드처의 로컬 IP 주소를 사용해 서버를 작성합니다. |
메소드의 개요 | |
---|---|
Socket |
accept ()
이 소켓에 대한 접속 요구를 대기해, 그것을 받습니다. |
void |
bind (SocketAddress endpoint)
ServerSocket 를 특정의 주소 (IP 주소 및 포트 번호)에 바인드 합니다. |
void |
bind (SocketAddress endpoint,
int backlog)
ServerSocket 를 특정의 주소 (IP 주소 및 포트 번호)에 바인드 합니다. |
void |
close ()
이 소켓을 닫습니다. |
ServerSocketChannel |
getChannel ()
이 소켓에 관련하는 고유 ServerSocketChannel 객체를 돌려줍니다 (존재하는 경우). |
InetAddress |
getInetAddress ()
이 서버 소켓의 로컬 주소를 돌려줍니다. |
int |
getLocalPort ()
이 소켓이 접속을 대기중의 포트를 돌려줍니다. |
SocketAddress |
getLocalSocketAddress ()
이 소켓이 바인드 되고 있는 단 점의 주소를 돌려줍니다. |
int |
getReceiveBufferSize ()
이 ServerSocket 로 사용되는 SO_RCVBUF 옵션의 값을 가져옵니다. |
boolean |
getReuseAddress ()
SO_REUSEADDR 가 유효한가 어떤가를 조사합니다. |
int |
getSoTimeout ()
SO_TIMEOUT 의 설정을 가져옵니다. |
protected void |
implAccept (Socket s)
ServerSocket 의 서브 클래스는, 이 메소드를 사용해 accept()를 오버라이드(override) 하는 것으로, 독자적인 서브 클래스의 소켓이 돌려주어지도록(듯이) 합니다. |
boolean |
isBound ()
ServerSocket 의 바인딩 상태를 돌려줍니다. |
boolean |
isClosed ()
ServerSocket 가 닫은 상태를 돌려줍니다. |
void |
setPerformancePreferences (int connectionTime,
int latency,
int bandwidth)
이 ServerSocket 의 퍼포먼스 설정을 실시합니다. |
void |
setReceiveBufferSize (int size)
이 ServerSocket 로부터 받아들여진 소켓의 SO_RCVBUF 옵션의 디폴트 추천값를 설정합니다. |
void |
setReuseAddress (boolean on)
SO_REUSEADDR 소켓 옵션을 유효 또는 무효로 합니다. |
static void |
setSocketFactory (SocketImplFactory fac)
어플리케이션의 서버 소켓 구현 팩토리를 설정합니다. |
void |
setSoTimeout (int timeout)
지정된 타임 아웃 (밀리 세컨드)을 사용해 SO_TIMEOUT 를 유효 또는 무효로 합니다. |
String |
toString ()
이 소켓의 구현 주소와 구현 포트를 String 로서 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
생성자 의 상세 |
---|
public ServerSocket() throws IOException
IOException
- 소켓을 열 때의 입출력 에러public ServerSocket(int port) throws IOException
0
을 지정하면(자), 비어 있는 포트상에서 소켓이 작성됩니다.
수신하는 접속 (접속 요구)의 큐의 최대 길이은,50
으로 설정됩니다. 큐가 메워지고 있을 때 접속 요구가 있으면(자), 접속은 거부됩니다.
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkListen
메소드가 port
인수를 그 인수로서 지정해 불려 가 이 조작이 허가될지 어떨지가 확인됩니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
port
- 포트 번호. 비어 있는 포트를 사용하는 경우는 0
IOException
- 소켓을 열고 있을 때 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkListen
메소드가 이 조작을 허가하지 않는 경우SocketImpl
,
SocketImplFactory.createSocketImpl()
,
setSocketFactory(java.net.SocketImplFactory)
,
SecurityManager.checkListen(int)
public ServerSocket(int port, int backlog) throws IOException
0
을 지정하면(자), 비어 있는 포트상에서 소켓이 작성됩니다.
수신하는 접속 (접속 요구)의 큐의 최대 길이은,backlog
파라미터로 설정됩니다. 큐가 메워지고 있을 때 접속 요구가 있으면(자), 접속은 거부됩니다.
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkListen
메소드가 port
인수를 그 인수로서 지정해 불려 가 이 조작이 허가될지 어떨지가 확인됩니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
backlog
인수는, 0 보다 큰 정의 값이 아니면 안됩니다. 건네받은 값이 0 이하의 경우는, 디폴트의 값이 사용됩니다.
port
- 사용하는 포트. 비어 있는 포트를 사용하는 경우는 0
backlog
- 큐의 최대 길이
IOException
- 소켓을 열고 있을 때 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkListen
메소드가 이 조작을 허가하지 않는 경우SocketImpl
,
SocketImplFactory.createSocketImpl()
,
setSocketFactory(java.net.SocketImplFactory)
,
SecurityManager.checkListen(int)
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException
시큐리티 매니저가 존재하는 경우, 이 메소드에 의해 그 checkListen
메소드가 port
인수를 그 인수로서 지정해 불려 가 이 조작이 허가될지 어떨지가 확인됩니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
backlog
인수는, 0 보다 큰 정의 값이 아니면 안됩니다. 건네받은 값이 0 이하의 경우는, 디폴트의 값이 사용됩니다.
port
- 로컬 TCP 포트backlog
- 대기하는 백 로그bindAddr
- 서버를 바인드 하는 로컬 InetAddress
SecurityException
- 시큐리티 매니저가 존재해, 그 checkListen
메소드가 이 조작을 허가하지 않는 경우
IOException
- 소켓을 열고 있을 때 입출력 에러가 발생했을 경우SocketOptions
,
SocketImpl
,
SecurityManager.checkListen(int)
메소드의 상세 |
---|
public void bind(SocketAddress endpoint) throws IOException
ServerSocket
를 특정의 주소 (IP 주소 및 포트 번호)에 바인드 합니다.
주소가 null
의 경우는, 시스템에 의해 일시적인 포트와 유효한 로컬 주소가 선택되어 소켓이 바인드 됩니다.
endpoint
- 바인드처의 IP 주소 및 포트 번호
IOException
- 바인드 조작에 실패했을 경우, 혹은 소켓이 벌써 바인드 되고 있는 경우
SecurityException
- SecurityManager
가 존재해, 그 checkListen
메소드가 이 조작을 허가하지 않는 경우
IllegalArgumentException
- 단 점이, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우public void bind(SocketAddress endpoint, int backlog) throws IOException
ServerSocket
을 특정의 주소 (IP 주소 및 포트 번호)에 바인드 합니다.
주소가 null
의 경우는, 시스템에 의해 일시적인 포트와 유효한 로컬 주소가 선택되어 소켓이 바인드 됩니다.
backlog
인수는, 0 보다 큰 정의 값이 아니면 안됩니다. 건네받은 값이 0 이하의 경우는, 디폴트의 값이 사용됩니다.
endpoint
- 바인드처의 IP 주소 및 포트 번호backlog
- 대기하는 백 로그의 길이
IOException
- 바인드 조작에 실패했을 경우, 혹은 소켓이 벌써 바인드 되고 있는 경우
SecurityException
- SecurityManager
가 존재해, 그 checkListen
메소드가 이 조작을 허가하지 않는 경우
IllegalArgumentException
- 단 점이, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우public InetAddress getInetAddress()
null
public int getLocalPort()
public SocketAddress getLocalSocketAddress()
null
를 돌려줍니다.
SocketAddress
. 소켓이 아직 바인드되어 있지 않은 경우는 null
getInetAddress()
,
getLocalPort()
,
bind(SocketAddress)
public Socket accept() throws IOException
새로운 소켓 s
가 작성되어 시큐리티 매니저가 존재하는 경우에는, 그 checkAccept
메소드가 인수로서 s.getInetAddress(). getHostAddress()
및 s.getPort()
를 지정해 불려 가 이 조작의 실행이 허가되고 있는 것이 확인됩니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
IOException
- 접속의 대기중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkAccept
메소드가 이 조작을 허가하지 않는 경우
SocketTimeoutException
- 이전에 setSoTimeout 를 사용해 타임 아웃이 설정되어 있어, 그 타임 아웃에 이르렀을 경우
IllegalBlockingModeException
- 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블로킹 모드이며, 수락 준비가 갖추어진 접속이 존재하지 않는 경우 ySecurityManager.checkAccept(java.lang.String, int)
protected final void implAccept(Socket s) throws IOException
s
- 소켓
IllegalBlockingModeException
- 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블로킹 모드인 경우
IOException
- 접속의 대기중에 입출력 에러가 발생했을 경우public void close() throws IOException
accept()
로 현재 블록 되고 있는 thread는 모두,SocketException
를 throw 합니다.
이 소켓에 관련하는 채널이 존재하는 경우는, 그 채널도 닫혀집니다.
IOException
- 소켓을 닫을 때 입출력 에러가 발생했을 경우public ServerSocketChannel getChannel()
ServerSocketChannel
객체를 돌려줍니다 (존재하는 경우).
채널 자체가 ServerSocketChannel.open
메소드를 사용해 작성되었을 경우에만, 서버 소켓에 채널이 존재합니다.
public boolean isBound()
public boolean isClosed()
public void setSoTimeout(int timeout) throws SocketException
timeout
- 밀리 세컨드로 나타내지는, 지정된 타임 아웃
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getSoTimeout()
public int getSoTimeout() throws IOException
IOException
- 입출력 에러가 발생했을 경우setSoTimeout(int)
public void setReuseAddress(boolean on) throws SocketException
TCP 접속을 닫으면(자), 접속이 닫은 뒤, 접속이 일정한 시간 타임 아웃 상태대로 되는 일이 있습니다 (일반적으로,TIME_WAIT 상태 또는 2MSL 대기 상태로 불린다). 주지의 소켓 주소 또는 포트를 사용하는 어플리케이션의 경우, 소켓 주소 또는 포트에 관련하는 접속이 타임 아웃 상태에 있으면(자), 소켓을 필요한 SocketAddress 에 바인드 할 수 없는 것이 있습니다.
bind(SocketAddress)
를 사용해 소켓을 바인드 하기 전에 SO_REUSEADDR 를 유효하게 하면(자), 이전의 접속이 타임 아웃 상태에서도 소켓을 바인드 할 수가 있습니다.
ServerSocket 가 작성되면(자),SO_REUSEADDR 의 초기설정은 정의되고 있지 않습니다. 어플리케이션은,getReuseAddress()
를 사용해 SO_REUSEADDR 의 초기설정을 확인할 수 있습니다.
소켓이 바인드 되었다 (isBound()
를 참조) 나중에 SO_REUSEADDR 를 유효 또는 무효로 하는 경우의 동작은 정의되고 있지 않습니다.
on
- 소켓 옵션을 유효하게 할까 무효로 하는지를 지정
SocketException
- SO_RESUEADDR 소켓 옵션을 유효 또는 무효로 할 경우에 에러가 발생하는 경우, 혹은 소켓이 닫고 있는 경우getReuseAddress()
,
bind(SocketAddress)
,
isBound()
,
isClosed()
public boolean getReuseAddress() throws SocketException
boolean
치
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setReuseAddress(boolean)
public String toString()
String
로서 돌려줍니다.
Object
내의 toString
public static void setSocketFactory(SocketImplFactory fac) throws IOException
어플리케이션으로 새로운 서버 소켓을 작성하면(자), 소켓 구현 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다.
이 메소드에 null
를 건네주어도, 팩토리가 벌써 설정되어 있지 않은 한, 그것은 무조작이 됩니다.
시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkSetFactory
메소드를 호출하는 것으로, 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
fac
- 목적의 팩토리
IOException
- 소켓 팩토리의 설정중에 입출력 에러가 발생했을 경우
SocketException
- 팩토리가 벌써 정의되고 있는 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkSetFactory
메소드가 이 조작을 허가하지 않는 경우SocketImplFactory.createSocketImpl()
,
SecurityManager.checkSetFactory()
public void setReceiveBufferSize(int size) throws SocketException
accept()
로부터 소켓이 반환된 후에 Socket.getReceiveBufferSize()
를 호출합니다. SO_RCVBUF 의 값은, 내부 소켓 수신 버퍼의 사이즈의 설정과 원격 피어에 통지되는 TCP 수신 윈도우의 사이즈의 설정의 양쪽 모두에 사용됩니다.
그 후,Socket.setReceiveBufferSize(int)
를 호출하는 것으로 값을 변경할 수 있습니다. 다만, 어플리케이션이 RFC1323 로 정의되고 있는 64K 바이트를 넘는 수신 윈도우를 사용 가능하게 할 필요가 있는 경우에는, 로컬 주소에 바인드 하기 전에 추천값를 ServerSocket 로 설정할 필요가 있습니다. 즉, 인수 없음 생성자 을 사용해 ServerSocket 를 작성해, 다음에 setReceiveBufferSize()를 호출해, 마지막에 bind()를 호출해 ServerSocket 를 주소에 바인드 할 필요가 있는 것을 의미합니다.
이것에 실패해도 에러는 발생하지 않고, 버퍼 사이즈는 요구된 값으로 설정됩니다. 다만, 이 ServerSocket 로부터 받는 소켓의 TCP 수신 윈도우는 64K 바이트 이하가 됩니다.
size
- 수신 버퍼 사이즈의 설정 사이즈. 이 값은 0 보다 크지 않으면 안됩니다.
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
IllegalArgumentException
- 치가 0 또는 0 보다 작은 값인 경우getReceiveBufferSize()
public int getReceiveBufferSize() throws SocketException
받아들인 소켓에 실제로 설정된 값은,Socket.getReceiveBufferSize()
를 호출해 판정하는 것에 주의해 주세요.
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setReceiveBufferSize(int)
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
소켓은 디폴트로, TCP/IP 프로토콜을 사용합니다. 구현에 따라서는, TCP/IP 와는 다른 퍼포먼스 특성을 가지는 대체 프로토콜을 제공하는 일도 있습니다. 어플리케이션은, 이 메소드를 사용하는 것으로, 구현으로 이용 가능한 프로토콜의 선택시에, 이러한 균형의 취하는 방법을 나타내는 독자적인 설정을 표현할 수 있습니다.
퍼포먼스 설정은, 접속 시간의 짧음, 응답 시간의 속도, 및 대역폭의 넓이의 상대적인 중요도를 나타내는 3 개의 정수치에 의해 기술됩니다. 이러한 정수의 절대치는 중요하지는 않습니다. 어느 특정의 프로토콜을 선택하기 위해서, 이러한 값이 단순하게 비교됩니다만, 그 때, 값이 크면보다 강한 설정을 나타냅니다. 예를 들어, 어플리케이션이 응답 시간의 속도나 대역폭의 넓이보다 접속 시간의 짧음을 우선하는 경우에는, 값 (1, 0, 0) 을 지정해 이 메소드를 호출할 수가 있습니다. 어플리케이션이 응답 시간의 속도보다 대역폭의 넓이를 우선해, 접속 시간의 짧음보다 대기 시간의 짧음을 우선하는 경우에는, 값 (0, 1, 2) 을 지정해 이 메소드를 호출할 수가 있습니다.
이 소켓의 바인드 후에 이 메소드를 호출해도, 무슨 효과도 없습니다. 즉, 이 기능을 사용하려면 , 인수 없음 생성자 으로 소켓을 작성할 필요가 있습니다.
connectionTime
- 접속 시간의 짧음의 상대적인 중요도를 나타내는 intlatency
- 응답 시간의 속도의 상대적인 중요도를 나타내는 intbandwidth
- 대역폭의 넓이의 상대적인 중요도를 나타내는 int
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.