|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.net.Socket
public class Socket
이 클래스는, 클라이언트 소켓 (단지 「소켓」이라고도 불린다)을 구현합니다. 소켓이란, 2 개의 머신간에 통신을 실시할 때의 단 점입니다.
소켓의 실제의 처리는,SocketImpl
클래스의 인스턴스에 의해 실행됩니다. 어플리케이션은, 소켓 구현을 작성하는 소켓 팩토리를 변경하는 것으로, 로컬 방화벽(fire wall)에 적절한 소켓을 작성하도록(듯이) 자신을 구성할 수가 있습니다.
setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketChannel
생성자 의 개요 | |
---|---|
|
Socket ()
시스템으로 디폴트가 되어 있는 타입의 SocketImpl 를 사용해, 접속되어 있지 않은 소켓을 작성합니다. |
|
Socket (InetAddress address,
int port)
스트림 소켓을 작성해, 지정된 IP 주소의 지정된 포트 번호에 접속합니다. |
|
Socket (InetAddress host,
int port,
boolean stream)
추천 되고 있지 않습니다. UDP 전송은 아니고 DatagramSocket 를 사용해 주세요. |
|
Socket (InetAddress address,
int port,
InetAddress localAddr,
int localPort)
소켓을 작성해, 지정된 원격 포트상의 지정된 원격 주소에 접속합니다. |
|
Socket (Proxy proxy)
접속되어 있지 않은 소켓을 작성합니다. |
protected |
Socket (SocketImpl impl)
사용자가 지정한 SocketImpl 를 사용해, 접속되어 있지 않은 소켓을 작성합니다. |
|
Socket (String host,
int port)
스트림 소켓을 작성해, 지정된 호스트상의 지정된 포트 번호에 접속합니다. |
|
Socket (String host,
int port,
boolean stream)
추천 되고 있지 않습니다. UDP 전송은 아니고 DatagramSocket 를 사용해 주세요. |
|
Socket (String host,
int port,
InetAddress localAddr,
int localPort)
소켓을 작성해, 지정된 원격 포트상의 지정된 원격 호스트에게 접속합니다. |
메소드의 개요 | |
---|---|
void |
bind (SocketAddress bindpoint)
소켓을 로컬 주소에 바인드 합니다. |
void |
close ()
이 소켓을 닫습니다. |
void |
connect (SocketAddress endpoint)
이 소켓을 서버에 접속합니다. |
void |
connect (SocketAddress endpoint,
int timeout)
지정된 타임 아웃치를 사용해, 이 소켓을 서버에 접속합니다. |
SocketChannel |
getChannel ()
이 소켓에 관련하는 고유 SocketChannel 객체를 돌려줍니다 (존재하는 경우). |
InetAddress |
getInetAddress ()
소켓의 접속처의 주소를 돌려줍니다. |
InputStream |
getInputStream ()
이 소켓의 입력 스트림을 돌려줍니다. |
boolean |
getKeepAlive ()
SO_KEEPALIVE 가 유효한가 어떤가를 조사합니다. |
InetAddress |
getLocalAddress ()
소켓의 바인드처의 로컬 주소를 가져옵니다. |
int |
getLocalPort ()
이 소켓의 바인드처의 로컬 포트를 돌려줍니다. |
SocketAddress |
getLocalSocketAddress ()
이 소켓이 바인드 되고 있는 단 점의 주소를 돌려줍니다. |
boolean |
getOOBInline ()
OOBINLINE 가 유효한가 어떤가를 조사합니다. |
OutputStream |
getOutputStream ()
이 소켓의 출력 스트림을 돌려줍니다. |
int |
getPort ()
이 소켓의 접속처의 원격 포트를 돌려줍니다. |
int |
getReceiveBufferSize ()
이 Socket 로 사용되는 SO_RCVBUF 옵션의 값을 가져옵니다. |
SocketAddress |
getRemoteSocketAddress ()
이 소켓이 접속되고 있는 단 점의 주소를 돌려줍니다. |
boolean |
getReuseAddress ()
SO_REUSEADDR 가 유효한가 어떤가를 조사합니다. |
int |
getSendBufferSize ()
이 Socket 로 사용되는 SO_SNDBUF 옵션의 값을 가져옵니다. |
int |
getSoLinger ()
SO_LINGER 의 설정을 돌려줍니다. |
int |
getSoTimeout ()
SO_TIMEOUT 의 설정을 돌려줍니다. |
boolean |
getTcpNoDelay ()
TCP_NODELAY 가 유효한가 어떤가를 조사합니다. |
int |
getTrafficClass ()
이 소켓으로부터 송신되는 패킷의 IP 헤더의 트래픽 클래스 또는 서비스 타입을 가져옵니다. |
boolean |
isBound ()
소켓의 바인딩 상태를 돌려줍니다. |
boolean |
isClosed ()
소켓이 닫은 상태를 돌려줍니다. |
boolean |
isConnected ()
소켓의 접속 상태를 돌려줍니다. |
boolean |
isInputShutdown ()
소켓 접속의 read측의 반이 닫고 있는지 어떤지를 돌려줍니다. |
boolean |
isOutputShutdown ()
소켓 접속의 기입측의 반이 닫고 있는지 어떤지를 돌려줍니다. |
void |
sendUrgentData (int data)
이 소켓상에서 1 바이트의 긴급 데이터를 송신합니다. |
void |
setKeepAlive (boolean on)
SO_KEEPALIVE 를 유효 또는 무효로 합니다. |
void |
setOOBInline (boolean on)
OOBINLINE (TCP 긴급 데이터의 수신)를 유효 또는 무효로 합니다. |
void |
setPerformancePreferences (int connectionTime,
int latency,
int bandwidth)
이 소켓의 퍼포먼스 설정을 실시합니다. |
void |
setReceiveBufferSize (int size)
이 Socket 의 SO_RCVBUF 옵션이 지정된 값으로 설정합니다. |
void |
setReuseAddress (boolean on)
SO_REUSEADDR 소켓 옵션을 유효 또는 무효로 합니다. |
void |
setSendBufferSize (int size)
이 Socket 의 SO_SNDBUF 옵션이 지정된 값으로 설정합니다. |
static void |
setSocketImplFactory (SocketImplFactory fac)
어플리케이션의 클라이언트 소켓 구현 팩토리를 설정합니다. |
void |
setSoLinger (boolean on,
int linger)
지정된 지연 시간 (초)을 사용해 SO_LINGER 를 유효 또는 무효로 합니다. |
void |
setSoTimeout (int timeout)
지정된 타임 아웃 (밀리 세컨드)을 사용해 SO_TIMEOUT 를 유효 또는 무효로 합니다. |
void |
setTcpNoDelay (boolean on)
TCP_NODELAY 을 유효 또는 무효로 합니다 (Nagle 의 알고리즘의 유효, 무효의 변환). |
void |
setTrafficClass (int tc)
이 소켓으로부터 송신되는 패킷의 IP 헤더의 트래픽 클래스 또는 서비스 타입의 8중창을 설정합니다. |
void |
shutdownInput ()
이 소켓의 입력 스트림을 「스트림의 마지막」으로 설정합니다. |
void |
shutdownOutput ()
이 소켓의 출력 스트림을 무효로 합니다. |
String |
toString ()
이 소켓을 String 로 변환합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
생성자 의 상세 |
---|
public Socket()
public Socket(Proxy proxy)
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 프록시의 호스트 주소와 포트 번호를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
례:
Socket s = new Socket(Proxy.NO_PROXY);
는, 다른 프록시 구성을 무시해 프레인인 소켓을 작성한다. Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));
는, 지정된 SOCKS 프록시 서버-경유로 접속하는 소켓을 작성한다.
proxy
- 어떠한 종류의 프록시 처리를 사용해야할 것인가를 지정한 Proxy
객체
IllegalArgumentException
- 프록시의 형태가 무효인 경우, 또는 프록시가 null
의 경우
SecurityException
- 시큐리티 매니저가 존재해, 프록시에 접속하는 권한이 거부되었을 경우ProxySelector
,
Proxy
protected Socket(SocketImpl impl) throws SocketException
impl
- 서브 클래스가 Socket 상에서 사용하는 SocketImpl 의 인스턴스
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우public Socket(String host, int port) throws UnknownHostException , IOException
지정된 호스트가 null 의 경우, 그것은, 주소를 InetAddress.getByName
(null) 와 지정하는 것이라고 등가가 됩니다. 즉, 그것은, 루프백 인터페이스의 주소를 지정하는 것이라고 등가가 됩니다.
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 호스트 주소와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
host
- 호스트명. 루프백 주소의 경우는 null
port
- 포트 번호
UnknownHostException
- 호스트의 IP 주소를 결정할 수 없었던 경우
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port) throws IOException
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 호스트 주소와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
address
- IP 주소port
- 포트 번호
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException
지정된 호스트가 null 의 경우, 그것은, 주소를 InetAddress.getByName
(null) 와 지정하는 것이라고 등가가 됩니다. 즉, 그것은, 루프백 인터페이스의 주소를 지정하는 것이라고 등가가 됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 호스트 주소와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
host
- 원격 호스트의 이름. 루프백 주소의 경우는 null
port
- 원격 포트localAddr
- 소켓의 바인드처의 로컬 주소localPort
- 소켓의 바인드처의 로컬 포트
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우SecurityManager.checkConnect(java.lang.String, int)
public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 호스트 주소와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
address
- 원격 주소port
- 원격 포트localAddr
- 소켓의 바인드처의 로컬 주소localPort
- 소켓의 바인드처의 로컬 포트
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(String host, int port, boolean stream) throws IOException
지정된 호스트가 null 의 경우, 그것은, 주소를 InetAddress.getByName
(null) 와 지정하는 것이라고 등가가 됩니다. 즉, 그것은, 루프백 인터페이스의 주소를 지정하는 것이라고 등가가 됩니다.
stream 인수가 true
의 경우, 이것은 스트림 소켓을 작성합니다. stream 인수가 false
의 경우, 이것은 데이터 그램 소켓을 작성합니다.
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가, 호스트 주소와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
UDP 소켓을 사용하는 경우, TCP/IP 에 관련하는 소켓 옵션은 적용되지 않습니다.
host
- 호스트명. 루프백 주소의 경우는 null
port
- 포트 번호stream
- 이것이 스트림 소켓, 데이터 그램 소켓의 머지않아인지를 나타내는 boolean
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
@Deprecated public Socket(InetAddress host, int port, boolean stream) throws IOException
stream 인수가 true
의 경우, 이것은 스트림 소켓을 작성합니다. stream 인수가 false
의 경우, 이것은 데이터 그램 소켓을 작성합니다.
어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.
시큐리티 매니저가 존재하는 경우, 그 checkAccess
메소드가,host.getHostAddress()
와 port
를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
UDP 소켓을 사용하는 경우, TCP/IP 에 관련하는 소켓 옵션은 적용되지 않습니다.
host
- IP 주소port
- 포트 번호stream
- true
의 경우는 스트림 소켓을 작성해, 그 이외의 경우는 데이터 그램 소켓을 작성한다
IOException
- 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkConnect
메소드가 이 조작을 허가하지 않는 경우setSocketImplFactory(java.net.SocketImplFactory)
,
SocketImpl
,
SocketImplFactory.createSocketImpl()
,
SecurityManager.checkConnect(java.lang.String, int)
메소드의 상세 |
---|
public void connect(SocketAddress endpoint) throws IOException
endpoint
- SocketAddress
IOException
- 접속시에 에러가 발생했을 경우
IllegalBlockingModeException
- 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블록 모드인 경우
IllegalArgumentException
- 단 점이 null 인지, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우public void connect(SocketAddress endpoint, int timeout) throws IOException
endpoint
- SocketAddress
timeout
- 사용하는 타임 아웃치 (밀리 세컨드)
IOException
- 접속시에 에러가 발생했을 경우
SocketTimeoutException
- 접속하기 전에 타임 아웃이 지났을 경우
IllegalBlockingModeException
- 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블록 모드인 경우
IllegalArgumentException
- 단 점이 null 인지, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우public void bind(SocketAddress bindpoint) throws IOException
주소가 null
의 경우는, 시스템에 의해 일시적인 포트와 유효한 로컬 주소가 선택되어 소켓이 바인드 됩니다.
bindpoint
- 바인드처의 SocketAddress
IOException
- 바인드 조작에 실패했을 경우, 혹은 소켓이 벌써 바인드 되고 있는 경우
IllegalArgumentException
- bindpoint 가, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우isBound()
public InetAddress getInetAddress()
null
public InetAddress getLocalAddress()
InetAddress.anyLocalAddress()
public int getPort()
public int getLocalPort()
public SocketAddress getRemoteSocketAddress()
null
를 돌려줍니다.
SocketAddress
. 소켓이 아직 접속되어 있지 않은 경우는 null
getInetAddress()
,
getPort()
,
connect(SocketAddress, int)
,
connect(SocketAddress)
public SocketAddress getLocalSocketAddress()
null
를 돌려줍니다.
SocketAddress
. 소켓이 아직 바인드되어 있지 않은 경우는 null
getLocalAddress()
,
getLocalPort()
,
bind(SocketAddress)
public SocketChannel getChannel()
SocketChannel
객체를 돌려줍니다 (존재하는 경우).
채널 자체가 SocketChannel.open
또는 ServerSocketChannel.accept
메소드를 사용해 작성되었을 경우에만, 소켓에 채널이 존재합니다.
public InputStream getInputStream() throws IOException
이 소켓에 채널을 관련지을 수 있고 있는 경우, 결과적으로 얻을 수 있는 입력 스트림은, 그 조작의 모든 것을 채널에 위양 합니다. 그 채널이 비블록 모드인 경우, 입력 스트림의 read 조작이 IllegalBlockingModeException
를 throw 합니다.
이상한 상황하에서는, 원격 호스트나 네트워크 소프트웨어에 의해 사용하고 있는 접속이 해제될 가능성이 있습니다 (TCP 접속의 경우이면 접속이 리셋 되는 등). 접속의 해제가 네트워크 소프트웨어에 의해 검출되었을 경우, 반환된 입력 스트림에 대해서 다음 일이 들어맞읍니다.
네트워크 소프트웨어가 소켓에 의해 버퍼링 된 바이트를 파기할 가능성이 있다. 네트워크 소프트웨어에 의해 파기되어 있지 않은 바이트는,read
를 사용해 읽어낼 수가 있다.
소켓상에 버퍼링 된 바이트가 1 개나 존재하지 않는지, 버퍼링 된 모든 바이트가 read
에 의해 소비되어 버렸을 경우, 후속의 read
호출은 모두,IOException
를 throw 한다.
소켓상에 버퍼링 된 바이트가 1 개나 존재하지 않고,close
를 사용해 소켓이 클로즈 되었을 경우,available
가 0
을 돌려준다.
반환된 InputStream
를 클로즈 하면(자), 관련지을 수 있었던 소켓이 클로즈 합니다.
IOException
- 입력 스트림의 작성시에 입출력 에러가 발생했을 경우, 소켓이 클로즈 되고 있는 경우, 소켓이 접속되어 있지 않은 경우, 또는 shutdownInput()
를 사용해 소켓의 입력이 종료 되었을 경우public OutputStream getOutputStream() throws IOException
이 소켓에 채널을 관련지을 수 있고 있는 경우, 결과적으로 얻을 수 있는 출력 스트림은, 그 조작의 모든 것을 채널에 위양 합니다. 채널이 비블록 모드인 경우, 출력 스트림의 write 조작이 IllegalBlockingModeException
를 throw 합니다.
반환된 OutputStream
를 클로즈 하면(자), 관련지을 수 있었던 소켓이 클로즈 합니다.
IOException
- 출력 스트림의 작성중에 입출력 에러가 발생했을 경우, 또는 소켓이 접속되어 있지 않은 경우public void setTcpNoDelay(boolean on) throws SocketException
on
- TCP_NODELAY 를 유효하게 하는 경우는 true
, 무효로 하는 경우는 false
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getTcpNoDelay()
public boolean getTcpNoDelay() throws SocketException
boolean
치
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setTcpNoDelay(boolean)
public void setSoLinger(boolean on, int linger) throws SocketException
on
- 지연 시간을 유효하게 할지 어떨지를 지정linger
- on 가 true 의 경우는, 지연 시간
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
IllegalArgumentException
- 지연 시간의 값이 부의 수치인 경우getSoLinger()
public int getSoLinger() throws SocketException
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setSoLinger(boolean, int)
public void sendUrgentData(int data) throws IOException
data
- 송신하는 데이터의 바이트
IOException
- 데이터 송신시에 에러가 발생했을 경우public void setOOBInline(boolean on) throws SocketException
수신 긴급 데이터의 처리에 관해서는, 한정된 지원 밖에 제공되어 있지 않은 것에 주의해 주세요. 특히, 고위 레벨의 프로토콜이 제공되어 있지 않은 경우, 수신하는 긴급 데이터의 통지는 제공되지 않고, 일반적으로 데이터와 긴급 데이터를 구별하는 기능은 없습니다.
on
- OOBINLINE 를 유효하게 하는 경우는 true
, 무효로 하는 경우는 false
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getOOBInline()
public boolean getOOBInline() throws SocketException
boolean
치
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setOOBInline(boolean)
public void setSoTimeout(int timeout) throws SocketException
timeout
- 밀리 세컨드로 나타내지는, 지정된 타임 아웃
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getSoTimeout()
public int getSoTimeout() throws SocketException
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setSoTimeout(int)
public void setSendBufferSize(int size) throws SocketException
SO_SNDBUF 는 힌트이므로, 어플리케이션으로 버퍼의 사이즈 설정을 조사할 필요가 있는 경우는,getSendBufferSize()
를 호출해 주세요.
size
- 송신 버퍼 사이즈의 설정 사이즈. 이 값은 0 보다 크지 않으면 안됩니다.
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
IllegalArgumentException
- 치가 0 또는 0 보다 작은 값인 경우getSendBufferSize()
public int getSendBufferSize() throws SocketException
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setSendBufferSize(int)
public void setReceiveBufferSize(int size) throws SocketException
수신 버퍼의 사이즈를 늘리면(자), 대규모 접속에서의 네트워크 입출력의 퍼포먼스를 올릴 수가 있습니다. 한편, 사이즈를 줄이면(자), 수신 데이터의 백 로그를 줄일 수가 있습니다.
SO_RCVBUF 는 힌트이므로, 어플리케이션으로 버퍼의 사이즈 설정을 조사할 필요가 있는 경우는,getReceiveBufferSize()
를 호출해 주세요.
SO_RCVBUF 의 값은, 원격 피어에 통지되는 TCP 수신 윈도우의 설정에도 사용됩니다. 일반적으로, 소켓이 접속되고 있는 한, 이 윈도우 사이즈는 언제라도 변경할 수 있습니다. 다만, 64K 를 넘는 수신 윈도우를 요구하는 경우는, 소켓을 원격 피어에 접속하기전으로 변경을 요구할 필요가 있습니다. 다음의 2 개의 경우에 주의해 주세요.
ServerSocket.setReceiveBufferSize(int)
를 호출해 이것을 실행할 필요가 있습니다.
size
- 수신 버퍼 사이즈의 설정 사이즈. 이 값은 0 보다 크지 않으면 안됩니다.
IllegalArgumentException
- 치가 0 또는 0 보다 작은 값인 경우
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getReceiveBufferSize()
,
ServerSocket.setReceiveBufferSize(int)
public int getReceiveBufferSize() throws SocketException
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setReceiveBufferSize(int)
public void setKeepAlive(boolean on) throws SocketException
on
- 소켓을 온대로 해 둘지 어떨지를 지정
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우getKeepAlive()
public boolean getKeepAlive() throws SocketException
boolean
치
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setKeepAlive(boolean)
public void setTrafficClass(int tc) throws SocketException
tc 의 범위는 0 <= tc <= 255
가아니면 안됩니다. 그렇지 않은 경우는, IllegalArgumentException 가 throw 됩니다.
주:
IP (Internet Protocol) 버젼 4 의 경우, RFC 1349 로 설명되고 있도록(듯이), 이 값은 우선도의 높은 octet 와 TOS 필드로 구성됩니다. TOS 필드는, 다음과 같이 비트 단위의 논리합에 의해 작성되는 비트 세트입니다.
IPTOS_LOWCOST (0x02)
IPTOS_RELIABILITY (0x04)
IPTOS_THROUGHPUT (0x08)
IPTOS_LOWDELAY (0x10)
우선 필드에 비트를 설정하면(자), 조작이 허가되지 않는 것을 나타내는 SocketException 가 되는 일이 있습니다.
RFC 1122 의 섹션 4.2. 4.2 에 나타나고 있도록(듯이), 준거한 TCP 구현은, 접속의 수명이 있는 동안은 어플리케이션이 TOS 필드를 변경할 수 있도록(듯이) 해야 합니다 (다만, 반드시 그렇게 할 필요는 없다). 따라서, TCP 접속의 확립 후에 서비스 타입 필드를 변경할 수 있을지 어떨지는, 사용하는 플랫폼내의 구현에 의해 정해집니다. 어플리케이션은, 접속 후에 TOS 필드를 변경할 수 있으면(자) 가정해야 하지는 않습니다.
IP (Internet Protocol) 버젼 6 의 경우,tc
는 IP 헤더의 sin6_flowinfo 필드에 포함되는 값입니다.
tc
- 비트 세트의 int
치
SocketException
- 트래픽 클래스 또는 서비스 타입의 설정시에 에러가 발생했을 경우getTrafficClass()
public int getTrafficClass() throws SocketException
사용하는 네트워크 구현이,setTrafficClass(int)
를 사용해 설정된 트래픽 클래스 또는 서비스 타입을 무시하는 일이 있으므로, 이 Socket 로 setTrafficClass(int)
메소드를 사용해 이전으로 설정된 값과는 다른 값이 이 메소드로부터 반환되는 일이 있습니다.
SocketException
- 트래픽 클래스 또는 서비스 타입의 값을 취득할 때에 에러가 발생했을 경우setTrafficClass(int)
public void setReuseAddress(boolean on) throws SocketException
TCP 접속을 클로즈 하는 경우, 접속 클로즈 후의 일정기간, 그 접속이 타임 아웃 상태 (일반적으로,TIME_WAIT 상태 또는 2MSL 대기 상태로 불린다)에 머무를 가능성이 있습니다. 주지의 소켓 주소 또는 포트를 사용하는 어플리케이션의 경우, 소켓 주소 또는 포트에 관련하는 접속이 타임 아웃 상태에 있으면(자), 소켓을 필요한 SocketAddress 에 바인드 할 수 없는 것이 있습니다.
bind(SocketAddress)
를 사용해 소켓을 바인드 하기 전에 SO_REUSEADDR 를 유효하게 하면(자), 이전의 접속이 타임 아웃 상태에서도 소켓을 바인드 할 수가 있습니다.
Socket 가 작성되면(자),SO_REUSEADDR 의 초기설정은 무효가 됩니다.
소켓이 바인드 되었다 (isBound()
를 참조) 나중에 SO_REUSEADDR 를 유효 또는 무효로 하는 경우의 동작은 정의되고 있지 않습니다.
on
- 소켓 옵션을 유효하게 할까 무효로 하는지를 지정
SocketException
- SO_RESUEADDR 소켓 옵션의 유효화 또는 무효화시에 에러가 발생했을 경우, 또는 소켓이 클로즈 되고 있는 경우getReuseAddress()
,
bind(SocketAddress)
,
isClosed()
,
isBound()
public boolean getReuseAddress() throws SocketException
boolean
치
SocketException
- 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우setReuseAddress(boolean)
public void close() throws IOException
현재 이 소켓의 입출력 조작으로 블록 떠날 수 있어 모든 thread가 SocketException
를 throw 합니다.
소켓이 닫혀지면(자), 그 후의 네트워크에 그 소켓을 사용할 수 없습니다 (즉, 재접속 또는 재바인드는 할 수 없다). 새로운 소켓을 작성할 필요가 있습니다.
이 소켓을 클로즈 하면(자), 이 소켓 InputStream
와 OutputStream
도 클로즈 됩니다.
이 소켓에 관련하는 채널이 존재하는 경우는, 그 채널도 닫혀집니다.
IOException
- 이 소켓을 닫을 때 입출력 에러가 발생했을 경우isClosed()
public void shutdownInput() throws IOException
소켓으로 shutdownInput()를 호출한 뒤에 소켓의 입력 스트림로부터 읽어들이면(자), 스트림은 EOF 를 돌려줍니다.
IOException
- 이 소켓을 정지할 경우에 입출력 에러가 발생했을 경우shutdownOutput()
,
close()
,
setSoLinger(boolean, int)
,
isInputShutdown()
public void shutdownOutput() throws IOException
IOException
- 이 소켓을 정지할 경우에 입출력 에러가 발생했을 경우shutdownInput()
,
close()
,
setSoLinger(boolean, int)
,
isOutputShutdown()
public String toString()
String
로 변환합니다.
Object
내의 toString
public boolean isConnected()
public boolean isBound()
bind(java.net.SocketAddress)
public boolean isClosed()
close()
public boolean isInputShutdown()
shutdownInput()
public boolean isOutputShutdown()
shutdownOutput()
public static void setSocketImplFactory(SocketImplFactory fac) throws IOException
어플리케이션으로 새로운 클라이언트 소켓을 작성하면(자), 소켓 구현 팩토리의 createSocketImpl
메소드가 불려 가 실제의 소켓이 작성됩니다.
이 메소드에 null
를 건네주어도, 팩토리가 벌써 설정되어 있지 않은 한, 그것은 무조작이 됩니다.
시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkSetFactory
메소드를 호출하는 것으로, 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.
fac
- 목적의 팩토리
IOException
- 소켓 팩토리의 설정중에 입출력 에러가 발생했을 경우
SocketException
- 팩토리가 벌써 정의되고 있는 경우
SecurityException
- 시큐리티 매니저가 존재해, 그 checkSetFactory
메소드가 이 조작을 허가하지 않는 경우SocketImplFactory.createSocketImpl()
,
SecurityManager.checkSetFactory()
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
소켓은 디폴트로, TCP/IP 프로토콜을 사용합니다. 구현에 따라서는, TCP/IP 와는 다른 퍼포먼스 특성을 가지는 대체 프로토콜을 제공하는 일도 있습니다. 어플리케이션은, 이 메소드를 사용하는 것으로, 구현으로 이용 가능한 프로토콜의 선택시에, 이러한 균형의 취하는 방법을 나타내는 독자적인 설정을 표현할 수 있습니다.
퍼포먼스 설정은, 접속 시간의 짧음, 응답 시간의 속도, 및 대역폭의 넓이의 상대적인 중요도를 나타내는 3 개의 정수치에 의해 기술됩니다. 이러한 정수의 절대치는 중요하지는 않습니다. 어느 특정의 프로토콜을 선택하기 위해서, 이러한 값이 단순하게 비교됩니다만, 그 때, 값이 크면보다 강한 설정을 나타냅니다. 0 보다 작은 값은 정의 값보다 낮은 우선 순위를 나타냅니다. 예를 들어, 어플리케이션이 응답 시간의 속도나 대역폭의 넓이보다 접속 시간의 짧음을 우선하는 경우에는, 값 (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 도 참조해 주세요.