JavaTM Platform
Standard Ed. 6

java.net
클래스 Socket

java.lang.Object 
  상위를 확장 java.net.Socket
직계의 기존의 서브 클래스:
SSLSocket


public class Socket
extends Object

이 클래스는, 클라이언트 소켓 (단지 「소켓」이라고도 불린다)을 구현합니다. 소켓이란, 2 개의 머신간에 통신을 실시할 때의 단 점입니다.  

소켓의 실제의 처리는,SocketImpl 클래스의 인스턴스에 의해 실행됩니다. 어플리케이션은, 소켓 구현을 작성하는 소켓 팩토리를 변경하는 것으로, 로컬 방화벽(fire wall)에 적절한 소켓을 작성하도록(듯이) 자신을 구성할 수가 있습니다.

도입된 버젼:
JDK1. 0
관련 항목:
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
 

생성자 의 상세

Socket

public Socket()
시스템으로 디폴트가 되어 있는 타입의 SocketImpl 를 사용해, 접속되어 있지 않은 소켓을 작성합니다.

도입된 버젼:
JDK1. 1

Socket

public Socket(Proxy  proxy)
접속되어 있지 않은 소켓을 작성합니다. 다른 설정에 관계없이 사용해야 할 프록시 타입이 존재하는 경우는, 그 타입을 지정합니다.  

시큐리티 매니저가 존재하는 경우, 그 checkAccess 메소드가, 프록시의 호스트 주소와 포트 번호를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.  

례:

파라미터:
proxy - 어떠한 종류의 프록시 처리를 사용해야할 것인가를 지정한 Proxy 객체
예외:
IllegalArgumentException - 프록시의 형태가 무효인 경우, 또는 프록시가 null 의 경우
SecurityException - 시큐리티 매니저가 존재해, 프록시에 접속하는 권한이 거부되었을 경우
도입된 버젼:
1.5
관련 항목:
ProxySelector , Proxy

Socket

protected Socket(SocketImpl  impl)
          throws SocketException 
사용자가 지정한 SocketImpl 를 사용해, 접속되어 있지 않은 소켓을 작성합니다.  

파라미터:
impl - 서브 클래스가 Socket 상에서 사용하는 SocketImpl 의 인스턴스
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK1. 1

Socket

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)

Socket

public Socket(InetAddress  address,
              int port)
       throws IOException 
스트림 소켓을 작성해, 지정된 IP 주소의 지정된 포트 번호에 접속합니다.  

어플리케이션으로 서버 소켓 팩토리를 지정하고 있는 경우는, 그 팩토리의 createSocketImpl 메소드가 불려 가 실제의 소켓이 작성됩니다. 그렇지 않은 경우는 「프레인인」소켓이 작성됩니다.  

시큐리티 매니저가 존재하는 경우, 그 checkAccess 메소드가, 호스트 주소와 port 를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.

파라미터:
address - IP 주소
port - 포트 번호
예외:
IOException - 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException - 시큐리티 매니저가 존재해, 그 checkConnect 메소드가 이 조작을 허가하지 않는 경우
관련 항목:
setSocketImplFactory(java.net.SocketImplFactory) , SocketImpl , SocketImplFactory.createSocketImpl() , SecurityManager.checkConnect(java.lang.String, int)

Socket

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 메소드가 이 조작을 허가하지 않는 경우
도입된 버젼:
JDK1. 1
관련 항목:
SecurityManager.checkConnect(java.lang.String, int)

Socket

public Socket(InetAddress  address,
              int port,
              InetAddress  localAddr,
              int localPort)
       throws IOException 
소켓을 작성해, 지정된 원격 포트상의 지정된 원격 주소에 접속합니다. 게다가 이 소켓은, 지정된 로컬 주소와 로컬 포트에 바인드 됩니다.  

시큐리티 매니저가 존재하는 경우, 그 checkAccess 메소드가, 호스트 주소와 port 를 인수로 지정해 불려 갑니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.

파라미터:
address - 원격 주소
port - 원격 포트
localAddr - 소켓의 바인드처의 로컬 주소
localPort - 소켓의 바인드처의 로컬 포트
예외:
IOException - 소켓의 생성중에 입출력 에러가 발생했을 경우
SecurityException - 시큐리티 매니저가 존재해, 그 checkConnect 메소드가 이 조작을 허가하지 않는 경우
도입된 버젼:
JDK1. 1
관련 항목:
SecurityManager.checkConnect(java.lang.String, int)

Socket

@Deprecated 
public Socket(String  host,
                         int port,
                         boolean stream)
       throws IOException 
추천 되고 있지 않습니다.  UDP 전송은 아니고 DatagramSocket 를 사용해 주세요.

스트림 소켓을 작성해, 지정된 호스트상의 지정된 포트 번호에 접속합니다.  

지정된 호스트가 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)

Socket

@Deprecated 
public Socket(InetAddress  host,
                         int port,
                         boolean stream)
       throws IOException 
추천 되고 있지 않습니다.  UDP 전송은 아니고 DatagramSocket 를 사용해 주세요.

소켓을 작성해, 지정된 IP 주소에 있는 지정된 포트 번호에 접속합니다.  

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)
메소드의 상세

connect

public void connect(SocketAddress  endpoint)
             throws IOException 
이 소켓을 서버에 접속합니다.

파라미터:
endpoint - SocketAddress
예외:
IOException - 접속시에 에러가 발생했을 경우
IllegalBlockingModeException - 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블록 모드인 경우
IllegalArgumentException - 단 점이 null 인지, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우
도입된 버젼:
1.4

connect

public void connect(SocketAddress  endpoint,
                    int timeout)
             throws IOException 
지정된 타임 아웃치를 사용해, 이 소켓을 서버에 접속합니다. 타임 아웃 0 은 무한의 타임 아웃으로서 해석됩니다. 그 후, 접속이 확립될까 에러가 발생할 때까지, 접속이 블록 됩니다.

파라미터:
endpoint - SocketAddress
timeout - 사용하는 타임 아웃치 (밀리 세컨드)
예외:
IOException - 접속시에 에러가 발생했을 경우
SocketTimeoutException - 접속하기 전에 타임 아웃이 지났을 경우
IllegalBlockingModeException - 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블록 모드인 경우
IllegalArgumentException - 단 점이 null 인지, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우
도입된 버젼:
1.4

bind

public void bind(SocketAddress  bindpoint)
          throws IOException 
소켓을 로컬 주소에 바인드 합니다.  

주소가 null 의 경우는, 시스템에 의해 일시적인 포트와 유효한 로컬 주소가 선택되어 소켓이 바인드 됩니다.

파라미터:
bindpoint - 바인드처의 SocketAddress
예외:
IOException - 바인드 조작에 실패했을 경우, 혹은 소켓이 벌써 바인드 되고 있는 경우
IllegalArgumentException - bindpoint 가, 이 소켓에 의해 지원되어 있지 않은 SocketAddress 서브 클래스인 경우
도입된 버젼:
1.4
관련 항목:
isBound()

getInetAddress

public InetAddress  getInetAddress()
소켓의 접속처의 주소를 돌려줍니다.

반환값:
이 소켓의 접속처의 원격 IP 주소. 소켓이 접속되어 있지 않은 경우는 null

getLocalAddress

public InetAddress  getLocalAddress()
소켓의 바인드처의 로컬 주소를 가져옵니다.

반환값:
소켓의 바인드처의 로컬 주소. 소켓이 아직 바인드되어 있지 않은 경우는 InetAddress.anyLocalAddress()
도입된 버젼:
JDK1. 1

getPort

public int getPort()
이 소켓의 접속처의 원격 포트를 돌려줍니다.

반환값:
이 소켓의 접속처의 원격 포트 번호. 소켓이 아직 접속되어 있지 않은 경우는 0

getLocalPort

public int getLocalPort()
이 소켓의 바인드처의 로컬 포트를 돌려줍니다.

반환값:
이 소켓의 바인드처의 로컬 포트 번호. 소켓이 아직 바인드되어 있지 않은 경우는 -1

getRemoteSocketAddress

public SocketAddress  getRemoteSocketAddress()
이 소켓이 접속되고 있는 단 점의 주소를 돌려줍니다. 소켓이 접속되어 있지 않은 경우는 null 를 돌려줍니다.

반환값:
이 소켓의 원격단점을 나타내는 SocketAddress. 소켓이 아직 접속되어 있지 않은 경우는 null
도입된 버젼:
1.4
관련 항목:
getInetAddress() , getPort() , connect(SocketAddress, int) , connect(SocketAddress)

getLocalSocketAddress

public SocketAddress  getLocalSocketAddress()
이 소켓이 바인드 되고 있는 단 점의 주소를 돌려줍니다. 소켓이 바인드되어 있지 않은 경우는 null 를 돌려줍니다.

반환값:
이 소켓의 로컬단점을 나타내는 SocketAddress. 소켓이 아직 바인드되어 있지 않은 경우는 null
도입된 버젼:
1.4
관련 항목:
getLocalAddress() , getLocalPort() , bind(SocketAddress)

getChannel

public SocketChannel  getChannel()
이 소켓에 관련하는 고유 SocketChannel 객체를 돌려줍니다 (존재하는 경우).

채널 자체가 SocketChannel.open 또는 ServerSocketChannel.accept 메소드를 사용해 작성되었을 경우에만, 소켓에 채널이 존재합니다.

반환값:
이 소켓에 관련지을 수 있었던 소켓 채널. 이 소켓이 채널용으로 작성된 것이 아닌 경우는 null
도입된 버젼:
1.4

getInputStream

public InputStream  getInputStream()
                           throws IOException 
이 소켓의 입력 스트림을 돌려줍니다.

이 소켓에 채널을 관련지을 수 있고 있는 경우, 결과적으로 얻을 수 있는 입력 스트림은, 그 조작의 모든 것을 채널에 위양 합니다. 그 채널이 비블록 모드인 경우, 입력 스트림의 read 조작이 IllegalBlockingModeException 를 throw 합니다.

이상한 상황하에서는, 원격 호스트나 네트워크 소프트웨어에 의해 사용하고 있는 접속이 해제될 가능성이 있습니다 (TCP 접속의 경우이면 접속이 리셋 되는 등). 접속의 해제가 네트워크 소프트웨어에 의해 검출되었을 경우, 반환된 입력 스트림에 대해서 다음 일이 들어맞읍니다.

반환된 InputStream 를 클로즈 하면(자), 관련지을 수 있었던 소켓이 클로즈 합니다.

반환값:
이 소켓으로부터 바이트를 읽어들이기 위한 입력 스트림
예외:
IOException - 입력 스트림의 작성시에 입출력 에러가 발생했을 경우, 소켓이 클로즈 되고 있는 경우, 소켓이 접속되어 있지 않은 경우, 또는 shutdownInput() 를 사용해 소켓의 입력이 종료 되었을 경우

getOutputStream

public OutputStream  getOutputStream()
                             throws IOException 
이 소켓의 출력 스트림을 돌려줍니다.

이 소켓에 채널을 관련지을 수 있고 있는 경우, 결과적으로 얻을 수 있는 출력 스트림은, 그 조작의 모든 것을 채널에 위양 합니다. 채널이 비블록 모드인 경우, 출력 스트림의 write 조작이 IllegalBlockingModeException 를 throw 합니다.

반환된 OutputStream 를 클로즈 하면(자), 관련지을 수 있었던 소켓이 클로즈 합니다.

반환값:
이 소켓에 바이트를 기입하기 위한 출력 스트림
예외:
IOException - 출력 스트림의 작성중에 입출력 에러가 발생했을 경우, 또는 소켓이 접속되어 있지 않은 경우

setTcpNoDelay

public void setTcpNoDelay(boolean on)
                   throws SocketException 
TCP_NODELAY 를 유효 또는 무효로 합니다 (Nagle 의 알고리즘의 유효, 무효의 변환).

파라미터:
on - TCP_NODELAY 를 유효하게 하는 경우는 true, 무효로 하는 경우는 false
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
getTcpNoDelay()

getTcpNoDelay

public boolean getTcpNoDelay()
                      throws SocketException 
TCP_NODELAY 가 유효한가 어떤가를 조사합니다.

반환값:
TCP_NODELAY 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
setTcpNoDelay(boolean)

setSoLinger

public void setSoLinger(boolean on,
                        int linger)
                 throws SocketException 
지정된 지연 시간 (초)을 사용해 SO_LINGER 를 유효 또는 무효로 합니다. 타임 아웃의 최대치는 플랫폼에 고유합니다. 설정은 소켓을 닫는 경우에만 영향을 줍니다.

파라미터:
on - 지연 시간을 유효하게 할지 어떨지를 지정
linger - on 가 true 의 경우는, 지연 시간
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
IllegalArgumentException - 지연 시간의 값이 부의 수치인 경우
도입된 버젼:
JDK1. 1
관련 항목:
getSoLinger()

getSoLinger

public int getSoLinger()
                throws SocketException 
SO_LINGER 의 설정을 돌려줍니다. 반환값 -1 은, 이 옵션이 무효가 되어 있는 것을 의미합니다. 설정은 소켓을 닫는 경우에만 영향을 줍니다.

반환값:
SO_LINGER 의 설정
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
setSoLinger(boolean, int)

sendUrgentData

public void sendUrgentData(int data)
                    throws IOException 
이 소켓상에서 1 바이트의 긴급 데이터를 송신합니다. 송신되는 바이트는, 데이터 파라미터의 최하정도의 8 비트입니다. 이 긴급 바이트는, 소켓의 OutputStream 에의 선행하는 모든 기입의 뒤, OutputStream 에의 후속의 모든 기입전에 송신됩니다.

파라미터:
data - 송신하는 데이터의 바이트
예외:
IOException - 데이터 송신시에 에러가 발생했을 경우
도입된 버젼:
1.4

setOOBInline

public void setOOBInline(boolean on)
                  throws SocketException 
OOBINLINE (TCP 긴급 데이터의 수신)를 유효 또는 무효로 합니다. 디폴트에서는 이 옵션은 무효가 되어 있어, 소켓상에서 수신된 TCP 긴급 데이터는 아무 통지도 없게 파기됩니다. 사용자가 긴급 데이터의 수신을 바라고 있는 경우는, 이 옵션을 유효하게 해 주세요. 유효하게 했을 경우, 긴급 데이터는 일반적으로 데이터와 함께 인 라인으로 수신됩니다.  

수신 긴급 데이터의 처리에 관해서는, 한정된 지원 밖에 제공되어 있지 않은 것에 주의해 주세요. 특히, 고위 레벨의 프로토콜이 제공되어 있지 않은 경우, 수신하는 긴급 데이터의 통지는 제공되지 않고, 일반적으로 데이터와 긴급 데이터를 구별하는 기능은 없습니다.

파라미터:
on - OOBINLINE 를 유효하게 하는 경우는 true, 무효로 하는 경우는 false
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
getOOBInline()

getOOBInline

public boolean getOOBInline()
                     throws SocketException 
OOBINLINE 가 유효한가 어떤가를 조사합니다.

반환값:
OOBINLINE 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
setOOBInline(boolean)

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException 
지정된 타임 아웃 (밀리 세컨드)을 사용해 SO_TIMEOUT 를 유효 또는 무효로 합니다. 이 옵션을 0 이외의 타임 아웃으로 설정하면(자), 이 Socket 에 관련지을 수 있었던 InputStream 의 read() 호출이, 그 시간동안만 블록 됩니다. 타임 아웃의 기한이 지나면(자), Socket 가 아직 유효해도 java.net.SocketTimeoutException 가 발행됩니다. 이 옵션은, 블록 처리에 들어가기 전에 유효하게 해 둘 필요가 있습니다. 타임 아웃은 0 보다 큰 값을 지정합니다. 타임 아웃 0 은 무한의 타임 아웃으로서 해석됩니다.

파라미터:
timeout - 밀리 세컨드로 나타내지는, 지정된 타임 아웃
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK 1.1
관련 항목:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws SocketException 
SO_TIMEOUT 의 설정을 돌려줍니다. 이 옵션이 무효 (타임 아웃이 무한)의 경우는 0 을 돌려줍니다.

반환값:
SO_TIMEOUT 의 설정
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException 
Socket 의 SO_SNDBUF 옵션이 지정된 값으로 설정합니다. SO_SNDBUF 옵션은, 사용하는 네트워크 입출력 버퍼로 설정하는 사이즈의 힌트로서 플랫폼의 네트워크 코드가 사용합니다.

SO_SNDBUF 는 힌트이므로, 어플리케이션으로 버퍼의 사이즈 설정을 조사할 필요가 있는 경우는,getSendBufferSize() 를 호출해 주세요.

파라미터:
size - 송신 버퍼 사이즈의 설정 사이즈. 이 값은 0 보다 크지 않으면 안됩니다.
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
IllegalArgumentException - 치가 0 또는 0 보다 작은 값인 경우
도입된 버젼:
1.2
관련 항목:
getSendBufferSize()

getSendBufferSize

public int getSendBufferSize()
                      throws SocketException 
Socket 로 사용되는 SO_SNDBUF 옵션의 값을 가져옵니다. 이것은, 이 Socket 로 출력용으로서 플랫폼이 사용하는 버퍼의 사이즈입니다.

반환값:
Socket 의 SO_SNDBUF 옵션의 값
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.2
관련 항목:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException 
Socket 의 SO_RCVBUF 옵션이 지정된 값으로 설정합니다. SO_RCVBUF 옵션은, 사용하는 네트워크 입출력 버퍼로 설정하는 사이즈의 힌트로서 플랫폼의 네트워크 코드가 사용합니다.

수신 버퍼의 사이즈를 늘리면(자), 대규모 접속에서의 네트워크 입출력의 퍼포먼스를 올릴 수가 있습니다. 한편, 사이즈를 줄이면(자), 수신 데이터의 백 로그를 줄일 수가 있습니다.

SO_RCVBUF 는 힌트이므로, 어플리케이션으로 버퍼의 사이즈 설정을 조사할 필요가 있는 경우는,getReceiveBufferSize() 를 호출해 주세요.

SO_RCVBUF 의 값은, 원격 피어에 통지되는 TCP 수신 윈도우의 설정에도 사용됩니다. 일반적으로, 소켓이 접속되고 있는 한, 이 윈도우 사이즈는 언제라도 변경할 수 있습니다. 다만, 64K 를 넘는 수신 윈도우를 요구하는 경우는, 소켓을 원격 피어에 접속하기으로 변경을 요구할 필요가 있습니다. 다음의 2 개의 경우에 주의해 주세요.

  1. ServerSocket 로부터 받아들인 소켓의 경우, ServerSocket 를 로컬 주소에 바인드 하기 전에,ServerSocket.setReceiveBufferSize(int) 를 호출해 이것을 실행할 필요가 있습니다.

  2. 클라이언트 소켓의 경우, 소켓을 그 원격 피어에 접속하기 전에, setReceiveBufferSize()를 호출할 필요가 있습니다.

파라미터:
size - 수신 버퍼 사이즈의 설정 사이즈. 이 값은 0 보다 크지 않으면 안됩니다.
예외:
IllegalArgumentException - 치가 0 또는 0 보다 작은 값인 경우
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.2
관련 항목:
getReceiveBufferSize() , ServerSocket.setReceiveBufferSize(int)

getReceiveBufferSize

public int getReceiveBufferSize()
                         throws SocketException 
Socket 로 사용되는 SO_RCVBUF 옵션의 값을 가져옵니다. 이것은, 이 Socket 로 입력용으로서 플랫폼이 사용하는 버퍼의 사이즈입니다.

반환값:
Socket 의 SO_RCVBUF 옵션의 값
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.2
관련 항목:
setReceiveBufferSize(int)

setKeepAlive

public void setKeepAlive(boolean on)
                  throws SocketException 
SO_KEEPALIVE 를 유효 또는 무효로 합니다.

파라미터:
on - 소켓을 온대로 해 둘지 어떨지를 지정
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.3
관련 항목:
getKeepAlive()

getKeepAlive

public boolean getKeepAlive()
                     throws SocketException 
SO_KEEPALIVE 가 유효한가 어떤가를 조사합니다.

반환값:
SO_KEEPALIVE 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.3
관련 항목:
setKeepAlive(boolean)

setTrafficClass

public void setTrafficClass(int tc)
                     throws SocketException 
이 소켓으로부터 송신되는 패킷의 IP 헤더의 트래픽 클래스 또는 서비스 타입의 8중창을 설정합니다. 사용하는 네트워크 구현이 이 값을 무시하는 일이 있으므로, 어플리케이션에서는 이 값을 힌트라고 생각해 주세요.

tc 의 범위는 0 <= tc <= 255아니면 안됩니다. 그렇지 않은 경우는, IllegalArgumentException 가 throw 됩니다.  

주: 

IP (Internet Protocol) 버젼 4 의 경우, RFC 1349 로 설명되고 있도록(듯이), 이 값은 우선도의 높은 octet 와 TOS 필드로 구성됩니다. TOS 필드는, 다음과 같이 비트 단위의 논리합에 의해 작성되는 비트 세트입니다.  

최하정도 비트는, MBZ (0 이 아니면 안된다) 비트에 대응하므로, 항상 무시됩니다.  

우선 필드에 비트를 설정하면(자), 조작이 허가되지 않는 것을 나타내는 SocketException 가 되는 일이 있습니다.  

RFC 1122 의 섹션 4.2. 4.2 에 나타나고 있도록(듯이), 준거한 TCP 구현은, 접속의 수명이 있는 동안은 어플리케이션이 TOS 필드를 변경할 수 있도록(듯이) 해야 합니다 (다만, 반드시 그렇게 할 필요는 없다). 따라서, TCP 접속의 확립 후에 서비스 타입 필드를 변경할 수 있을지 어떨지는, 사용하는 플랫폼내의 구현에 의해 정해집니다. 어플리케이션은, 접속 후에 TOS 필드를 변경할 수 있으면(자) 가정해야 하지는 않습니다.  

IP (Internet Protocol) 버젼 6 의 경우,tc 는 IP 헤더의 sin6_flowinfo 필드에 포함되는 값입니다.

파라미터:
tc - 비트 세트의 int
예외:
SocketException - 트래픽 클래스 또는 서비스 타입의 설정시에 에러가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
getTrafficClass()

getTrafficClass

public int getTrafficClass()
                    throws SocketException 
이 소켓으로부터 송신되는 패킷의 IP 헤더의 트래픽 클래스 또는 서비스 타입을 가져옵니다.  

사용하는 네트워크 구현이,setTrafficClass(int) 를 사용해 설정된 트래픽 클래스 또는 서비스 타입을 무시하는 일이 있으므로, 이 Socket 로 setTrafficClass(int) 메소드를 사용해 이전으로 설정된 값과는 다른 값이 이 메소드로부터 반환되는 일이 있습니다.

반환값:
벌써 설정되어 있는 트래픽 클래스 또는 서비스형
예외:
SocketException - 트래픽 클래스 또는 서비스 타입의 값을 취득할 때에 에러가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
setTrafficClass(int)

setReuseAddress

public void setReuseAddress(boolean on)
                     throws SocketException 
SO_REUSEADDR 소켓 옵션을 유효 또는 무효로 합니다.  

TCP 접속을 클로즈 하는 경우, 접속 클로즈 후의 일정기간, 그 접속이 타임 아웃 상태 (일반적으로,TIME_WAIT 상태 또는 2MSL 대기 상태로 불린다)에 머무를 가능성이 있습니다. 주지의 소켓 주소 또는 포트를 사용하는 어플리케이션의 경우, 소켓 주소 또는 포트에 관련하는 접속이 타임 아웃 상태에 있으면(자), 소켓을 필요한 SocketAddress 에 바인드 할 수 없는 것이 있습니다.  

bind(SocketAddress) 를 사용해 소켓을 바인드 하기 전에 SO_REUSEADDR 를 유효하게 하면(자), 이전의 접속이 타임 아웃 상태에서도 소켓을 바인드 할 수가 있습니다.  

Socket 가 작성되면(자),SO_REUSEADDR 의 초기설정은 무효가 됩니다.  

소켓이 바인드 되었다 (isBound() 를 참조) 나중에 SO_REUSEADDR 를 유효 또는 무효로 하는 경우의 동작은 정의되고 있지 않습니다.

파라미터:
on - 소켓 옵션을 유효하게 할까 무효로 하는지를 지정
예외:
SocketException - SO_RESUEADDR 소켓 옵션의 유효화 또는 무효화시에 에러가 발생했을 경우, 또는 소켓이 클로즈 되고 있는 경우
도입된 버젼:
1.4
관련 항목:
getReuseAddress() , bind(SocketAddress) , isClosed() , isBound()

getReuseAddress

public boolean getReuseAddress()
                        throws SocketException 
SO_REUSEADDR 가 유효한가 어떤가를 조사합니다.

반환값:
SO_REUSEADDR 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 사용하고 있는 프로토콜로 에러 (TCP 에러등)가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
setReuseAddress(boolean)

close

public void close()
           throws IOException 
이 소켓을 닫습니다.  

현재 이 소켓의 입출력 조작으로 블록 떠날 수 있어 모든 thread가 SocketException 를 throw 합니다.  

소켓이 닫혀지면(자), 그 후의 네트워크에 그 소켓을 사용할 수 없습니다 (즉, 재접속 또는 재바인드는 할 수 없다). 새로운 소켓을 작성할 필요가 있습니다.

이 소켓을 클로즈 하면(자), 이 소켓 InputStreamOutputStream 도 클로즈 됩니다.

이 소켓에 관련하는 채널이 존재하는 경우는, 그 채널도 닫혀집니다.

예외:
IOException - 이 소켓을 닫을 때 입출력 에러가 발생했을 경우
관련 항목:
isClosed()

shutdownInput

public void shutdownInput()
                   throws IOException 
이 소켓의 입력 스트림을 「스트림의 마지막」으로 설정합니다. 소켓의 입력 스트림 측에 송신된 데이터는 모두, 확인된 뒤 아무 통지도 없게 파기됩니다.  

소켓으로 shutdownInput()를 호출한 뒤에 소켓의 입력 스트림로부터 읽어들이면(자), 스트림은 EOF 를 돌려줍니다.

예외:
IOException - 이 소켓을 정지할 경우에 입출력 에러가 발생했을 경우
도입된 버젼:
1.3
관련 항목:
shutdownOutput() , close() , setSoLinger(boolean, int) , isInputShutdown()

shutdownOutput

public void shutdownOutput()
                    throws IOException 
이 소켓의 출력 스트림을 무효로 합니다. TCP 소켓의 경우, 그때까지 기입해진 데이터의 모든 것이, TCP 의 일반적으로의 접속 종료 순서에 따라 송신됩니다. 소켓으로 shutdownOutput()를 호출한 뒤에 소켓의 출력 스트림에 기입하면(자), 스트림은 IOException 를 throw 합니다.

예외:
IOException - 이 소켓을 정지할 경우에 입출력 에러가 발생했을 경우
도입된 버젼:
1.3
관련 항목:
shutdownInput() , close() , setSoLinger(boolean, int) , isOutputShutdown()

toString

public String  toString()
이 소켓을 String 로 변환합니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 소켓의 캐릭터 라인 표현

isConnected

public boolean isConnected()
소켓의 접속 상태를 돌려줍니다.

반환값:
소켓이 서버에 정상적으로 접속되고 있는 경우는 true
도입된 버젼:
1.4

isBound

public boolean isBound()
소켓의 바인딩 상태를 돌려줍니다.

반환값:
소켓이 정상적으로 주소에 바인드 되고 있는 경우는 true
도입된 버젼:
1.4
관련 항목:
bind(java.net.SocketAddress)

isClosed

public boolean isClosed()
소켓이 닫은 상태를 돌려줍니다.

반환값:
소켓이 닫았을 경우는 true
도입된 버젼:
1.4
관련 항목:
close()

isInputShutdown

public boolean isInputShutdown()
소켓 접속의 read측의 반이 닫고 있는지 어떤지를 돌려줍니다.

반환값:
소켓의 입력이 정지했을 경우는 true
도입된 버젼:
1.4
관련 항목:
shutdownInput()

isOutputShutdown

public boolean isOutputShutdown()
소켓 접속의 기입측의 반이 닫고 있는지 어떤지를 돌려줍니다.

반환값:
소켓의 출력이 정지했을 경우는 true
도입된 버젼:
1.4
관련 항목:
shutdownOutput()

setSocketImplFactory

public static void setSocketImplFactory(SocketImplFactory  fac)
                                 throws IOException 
어플리케이션의 클라이언트 소켓 구현 팩토리를 설정합니다. 팩토리를 지정할 수 있는 것은 한 번 뿐입니다.  

어플리케이션으로 새로운 클라이언트 소켓을 작성하면(자), 소켓 구현 팩토리의 createSocketImpl 메소드가 불려 가 실제의 소켓이 작성됩니다.  

이 메소드에 null 를 건네주어도, 팩토리가 벌써 설정되어 있지 않은 한, 그것은 무조작이 됩니다.

시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkSetFactory 메소드를 호출하는 것으로, 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.

파라미터:
fac - 목적의 팩토리
예외:
IOException - 소켓 팩토리의 설정중에 입출력 에러가 발생했을 경우
SocketException - 팩토리가 벌써 정의되고 있는 경우
SecurityException - 시큐리티 매니저가 존재해, 그 checkSetFactory 메소드가 이 조작을 허가하지 않는 경우
관련 항목:
SocketImplFactory.createSocketImpl() , SecurityManager.checkSetFactory()

setPerformancePreferences

public void setPerformancePreferences(int connectionTime,
                                      int latency,
                                      int bandwidth)
이 소켓의 퍼포먼스 설정을 실시합니다.

소켓은 디폴트로, TCP/IP 프로토콜을 사용합니다. 구현에 따라서는, TCP/IP 와는 다른 퍼포먼스 특성을 가지는 대체 프로토콜을 제공하는 일도 있습니다. 어플리케이션은, 이 메소드를 사용하는 것으로, 구현으로 이용 가능한 프로토콜의 선택시에, 이러한 균형의 취하는 방법을 나타내는 독자적인 설정을 표현할 수 있습니다.

퍼포먼스 설정은, 접속 시간의 짧음, 응답 시간의 속도, 및 대역폭의 넓이의 상대적인 중요도를 나타내는 3 개의 정수치에 의해 기술됩니다. 이러한 정수의 절대치는 중요하지는 않습니다. 어느 특정의 프로토콜을 선택하기 위해서, 이러한 값이 단순하게 비교됩니다만, 그 때, 값이 크면보다 강한 설정을 나타냅니다. 0 보다 작은 값은 정의 값보다 낮은 우선 순위를 나타냅니다. 예를 들어, 어플리케이션이 응답 시간의 속도나 대역폭의 넓이보다 접속 시간의 짧음을 우선하는 경우에는, 값 (1, 0, 0) 을 지정해 이 메소드를 호출할 수가 있습니다. 어플리케이션이 응답 시간의 속도보다 대역폭의 넓이를 우선해, 접속 시간의 짧음보다 대기 시간의 짧음을 우선하는 경우에는, 값 (0, 1, 2) 을 지정해 이 메소드를 호출할 수가 있습니다.

이 소켓의 접속 후에 이 메소드를 호출해도, 무슨 효과도 없습니다.

파라미터:
connectionTime - 접속 시간의 짧음의 상대적인 중요도를 나타내는 int
latency - 응답 시간의 속도의 상대적인 중요도를 나타내는 int
bandwidth - 대역폭의 넓이의 상대적인 중요도를 나타내는 int
도입된 버젼:
1.5

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.