JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.net
클래스 DatagramSocket

java.lang.Object 
  |
  +--java.net.DatagramSocket
직계의 기존의 서브 클래스:
MulticastSocket

public class DatagramSocket
extends Object

이 클래스는 데이터 그램 패킷을 송수신하기 위한 소켓을 나타냅니다.

데이터 그램 소켓은 패킷 전달 서비스의 송신점 또는 수신점입니다. 데이터 그램 소켓상에서 송신 또는 수신하는 각 패킷은 각각 다른 주소로 경로가 지정됩니다. 어느 머신으로부터 다른 머신에 복수의 패킷을 송신하는 경우, 각 패킷은 다른 경로에서 송신될 가능성이 있어, 행선지에는 임의의 순서로 도달할 가능성이 있습니다.

UDP 브로드캐스트 송신은 DatagramSocket 상에서 항상 유효하게 되어 있습니다. 브르드캐스트파켓트를 수신하려면 , DatagramSocket 가 와일드 카드 주소에 바인드 되고 있을 필요가 있습니다. 구현에 따라서는 DatagramSocket 가 특정의 주소에 바인드 되고 있는 경우에도 브로드캐스트 패킷을 수신하는 것도 있습니다.

례: DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888)); 이것은 다음과 같습니다. DatagramSocket s = new DatagramSocket(8888); 어느 쪽의 경우도, UDP 포토 8888 의 브로드캐스트를 수신할 수 있는 DatagramSocket 가 작성됩니다.

도입된 버젼:
JDK1. 0
관련 항목:
DatagramPacket , DatagramChannel

생성자의 개요
  DatagramSocket ()
          데이터 그램 소켓을 구축해, 로컬 호스트 머신상의 사용 가능한 포토에 바인드 합니다.
protected DatagramSocket (DatagramSocketImpl  impl)
          지정된 DatagramSocketImpl 를 사용해 안 바운드의 데이터 그램 소켓을 작성합니다.
  DatagramSocket (int port)
          데이터 그램 소켓을 구축해, 로컬 호스트 머신상의 지정된 포토에 바인드 합니다.
  DatagramSocket (int port, InetAddress  laddr)
          지정된 로컬 주소에 바인드 된 데이터 그램 소켓을 작성합니다.
  DatagramSocket (SocketAddress  bindaddr)
          지정된 로컬 주소에 바인드 된 데이터 그램 소켓을 작성합니다.
 
메소드의 개요
 void bind (SocketAddress  addr)
          이 DatagramSocket 를 특정의 주소 및 포토에 바인드 합니다.
 void close ()
          이 데이터 그램 소켓을 닫습니다.
 void connect (InetAddress  address, int port)
          이 소켓의 리모트 주소에, 소켓을 접속합니다.
 void connect (SocketAddress  addr)
          이 소켓을 리모트 소켓 주소 (IP 주소 + 포토 번호)에 접속합니다.
 void disconnect ()
          소켓을 절단 합니다.
 boolean getBroadcast ()
          SO_BROADCAST 가 유효한가 어떤가를 조사합니다.
 DatagramChannel getChannel ()
          이 데이터 그램 소켓에 관련하는 고유의 DatagramChannel 오브젝트를 돌려줍니다 (존재하는 경우).
 InetAddress getInetAddress ()
          소켓이 접속되고 있는 주소를 돌려줍니다.
 InetAddress getLocalAddress ()
          소켓의 바인드처의 로컬 주소를 취득합니다.
 int getLocalPort ()
          이 소켓의 바인드처가 되는 로컬 호스트상의 포토 번호를 돌려줍니다.
 SocketAddress getLocalSocketAddress ()
          이 소켓이 바인드 되고 있는 단 점의 주소를 돌려줍니다.
 int getPort ()
          이 소켓을 위한 포토를 돌려줍니다.
 int getReceiveBufferSize ()
          이 DatagramSocket 로 사용되는 SO_RCVBUF 옵션의 값을 취득합니다.
 SocketAddress getRemoteSocketAddress ()
          이 소켓이 접속되고 있는 단 점의 주소를 돌려줍니다.
 boolean getReuseAddress ()
          SO_REUSEADDR 가 유효한가 어떤가를 조사합니다.
 int getSendBufferSize ()
          이 DatagramSocket 로 사용되는 SO_SNDBUF 옵션의 값을 취득합니다.
 int getSoTimeout ()
          SO_TIMEOUT 의 설정을 취득합니다.
 int getTrafficClass ()
          이 DatagramSocket 로부터 송신되는 패킷의 IP 데이터 그램 헤더의 트래픽 클래스 또는 서비스 타입을 취득합니다.
 boolean isBound ()
          소켓의 바인딩 상태를 돌려줍니다.
 boolean isClosed ()
          소켓이 닫았는지 어떠했는지를 돌려줍니다.
 boolean isConnected ()
          소켓의 접속 상태를 돌려줍니다.
 void receive (DatagramPacket  p)
          이 소켓으로부터의 데이터 그램 패킷을 수신합니다.
 void send (DatagramPacket  p)
          이 소켓으로부터 데이터 그램 패킷을 송신합니다.
 void setBroadcast (boolean on)
          SO_BROADCAST 를 유효 또는 무효로 합니다.
static void setDatagramSocketImplFactory (DatagramSocketImplFactory  fac)
          어플리케이션의 데이터 그램 소켓 구현 팩토리를 설정합니다.
 void setReceiveBufferSize (int size)
          SO_RCVBUF 옵션을, 이 DatagramSocket 로 지정된 값으로 설정합니다.
 void setReuseAddress (boolean on)
          SO_REUSEADDR 소켓 옵션을 유효 또는 무효로 합니다.
 void setSendBufferSize (int size)
          SO_SNDBUF 옵션을, 이 DatagramSocket 로 지정된 값으로 설정합니다.
 void setSoTimeout (int timeout)
          지정된 대기 시간 (밀리 세컨드 단위)을 사용해, SO_TIMEOUT 를 유효 또는 무효로 합니다.
 void setTrafficClass (int tc)
          이 DatagramSocket 로부터 송신되는 데이터 그램의 IP 데이터 그램 헤더의 트래픽 클래스 또는 서비스 타입 octet 를 설정합니다.
 
클래스 java.lang. Object 에서 상속받은 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자의 상세

DatagramSocket

public DatagramSocket()
               throws SocketException 
데이터 그램 소켓을 구축해, 로컬 호스트 머신상의 사용 가능한 포토에 바인드 합니다. 이 소켓은 커넬에 의해 선택된 IP 주소인 와일드 카드 주소에 바인드 됩니다.

시큐러티 매니저가 존재하는 경우, 최초로 시큐러티 매니저의 checkListen 가, 인수로서 0 을 지정해 불려 가 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 되는 일이 있습니다.

예외:
SocketException - 소켓을 열 수가 없었던 경우, 혹은 지정된 로컬 포토에 소켓을 바인드 할 수 없었던 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkListen 메소드가 이 조작을 허가하지 않는 경우
관련 항목:
SecurityManager.checkListen(int)

DatagramSocket

protected DatagramSocket(DatagramSocketImpl  impl)
지정된 DatagramSocketImpl 를 사용해 안 바운드의 데이터 그램 소켓을 작성합니다.

파라미터:
impl - 서브 클래스가 DatagramSocket 상에서 사용하는 DatagramSocketImpl 의 인스턴스
도입된 버젼:
1.4

DatagramSocket

public DatagramSocket(SocketAddress  bindaddr)
               throws SocketException 
지정된 로컬 주소에 바인드 된 데이터 그램 소켓을 작성합니다.

주소가 null 의 경우는 안 바운드의 소켓을 작성합니다.

시큐러티 매니저가 존재하는 경우, 최초로 시큐러티 매니저의 checkListen 메소드가, 인수로서 소켓 주소의 포토를 지정해 불려 가 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 되는 일이 있습니다.

파라미터:
bindaddr - 바인드 하는 로컬 소켓 주소. 안 바운드의 소켓의 경우는 null
예외:
SocketException - 소켓을 열 수가 없었던 경우, 혹은 지정된 로컬 포토에 소켓을 바인드 할 수 없었던 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkListen 메소드가 이 조작을 허가하지 않는 경우
도입된 버젼:
1.4
관련 항목:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port)
               throws SocketException 
데이터 그램 소켓을 구축해, 로컬 호스트 머신상의 지정된 포토에 바인드 합니다. 이 소켓은 커넬에 의해 선택된 IP 주소인 와일드 카드 주소에 바인드 됩니다.

시큐러티 매니저가 존재하는 경우, 최초로 시큐러티 매니저의 checkListen 메소드가, 인수로서 port 를 지정해 불려 가 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 되는 일이 있습니다.

파라미터:
port - 사용하는 포토
예외:
SocketException - 소켓을 열 수가 없었던 경우, 혹은 지정된 로컬 포토에 소켓을 바인드 할 수 없었던 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkListen 메소드가 이 조작을 허가하지 않는 경우
관련 항목:
SecurityManager.checkListen(int)

DatagramSocket

public DatagramSocket(int port,
                      InetAddress  laddr)
               throws SocketException 
지정된 로컬 주소에 바인드 된 데이터 그램 소켓을 작성합니다. 로컬 포토는 0 ~ 65535 까지의 범위에서 지정합니다. IP 주소가 0.0. 0.0 의 경우, 소켓은 커넬에 의해 선택된 IP 주소인 와일드 카드 주소에 바인드 됩니다.

시큐러티 매니저가 존재하는 경우, 최초로 시큐러티 매니저의 checkListen 메소드가, 인수로서 port 를 지정해 불려 가 이 조작이 허가되고 있는 것을 확인합니다. 이 결과, SecurityException 가 되는 일이 있습니다.

파라미터:
port - 사용하는 로컬 포토
laddr - 바인드처의 로컬 주소
예외:
SocketException - 소켓을 열 수가 없었던 경우, 혹은 지정된 로컬 포토에 소켓을 바인드 할 수 없었던 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkListen 메소드가 이 조작을 허가하지 않는 경우
도입된 버젼:
JDK1. 1
관련 항목:
SecurityManager.checkListen(int)
메소드의 상세

bind

public void bind(SocketAddress  addr)
          throws SocketException 
이 DatagramSocket 를 특정의 주소 및 포토에 바인드 합니다.

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

파라미터:
addr - 바인드처의 주소 및 포토
예외:
SocketException - 바인드시에 에러가 발생했을 경우, 혹은 소켓이 벌써 바인드 되고 있는 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkListen 메소드가 이 조작을 허가하지 않는 경우
IllegalArgumentException - addr 가 이 소켓으로 서포트되어 있지 않은 SocketAddress 서브 클래스인 경우
도입된 버젼:
1.4

connect

public void connect(InetAddress  address,
                    int port)
이 소켓의 리모트 주소에, 소켓을 접속합니다. 소켓이 리모트 주소에 접속되면(자), 패킷은 그 주소와의 사이에만 송수신 됩니다. 디폴트에서는 데이터 그램 소켓은 접속되지 않습니다.

소켓을 접속하는 리모트 접속처가 존재하지 않는가 도달 불가능의 경우, 및 그 주소에 대한 ICMP 전송처 도달 불능 패킷을 수신했을 경우는 이후의 송신 또는 수신 호출로 PortUnreachableException 가 슬로우 되는 일이 있습니다. 예외가 슬로우 된다고 하는 프로텍션이 있는 것은 아닙니다.

지정된 호스트 및 포토와의 데이터 그램의 송수신을 행하기 위한 호출측의 액세스권은 접속시에 확인됩니다. 소켓이 접속되었을 때, 송수신에서는 패킷의 수신 및 송신에 대한 시큐러티 체크를실시하지 않습니다. 다만, 패킷과 소켓의 주소 및 포토가 일치할지 어떨지의 확인은 실시합니다. 송신의 처리에서는 패킷의 주소가 설정되어 있는 경우에, 패킷의 주소와 소켓의 주소가 일치하지 않을 때는 IllegalArgumentException 가 슬로우 됩니다. 멀티 캐스트 주소에 접속되고 있는 소켓은 송신 패킷인 만큼 사용할 수 있습니다.

파라미터:
address - 소켓이 사용하는 리모트 주소
port - 소켓이 사용하는 리모트 포토
예외:
IllegalArgumentException - 주소가 null 인 경우, 혹은 포토가 범위외의 경우
SecurityException - 지정된 주소 및 포토와의 데이터 그램의 송수신이, 호출 측에 허가되어 있지 않은 경우
관련 항목:
disconnect() , send(java.net.DatagramPacket) , receive(java.net.DatagramPacket)

connect

public void connect(SocketAddress  addr)
             throws SocketException 
이 소켓을 리모트 소켓 주소 (IP 주소 + 포토 번호)에 접속합니다.

파라미터:
addr - 리모트 주소
예외:
SocketException - 접속에 실패했을 경우
IllegalArgumentException - addr 가 null 인 경우, 또는 addr 가 이 소켓으로 서포트되어 있지 않은 SocketAddress 서브 클래스인 경우
도입된 버젼:
1.4
관련 항목:
connect(java.net.InetAddress, int)

disconnect

public void disconnect()
소켓을 절단 합니다. 소켓이 접속되어 있지 않은 경우는 아무것도 실시하지 않습니다.

관련 항목:
connect(java.net.InetAddress, int)

isBound

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

반환값:
소켓이 정상적으로 주소에 바인드 되고 있는 경우는 true
도입된 버젼:
1.4

isConnected

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

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

getInetAddress

public InetAddress  getInetAddress()
소켓이 접속되고 있는 주소를 돌려줍니다. 소켓이 접속되어 있지 않은 경우는 null 를 돌려줍니다.

반환값:
소켓이 접속되고 있는 주소

getPort

public int getPort()
이 소켓을 위한 포토를 돌려줍니다. 소켓이 접속되어 있지 않은 경우는 -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)

send

public void send(DatagramPacket  p)
          throws IOException 
이 소켓으로부터 데이터 그램 패킷을 송신합니다. DatagramPacket 에는 송신하는 데이터, 데이터의 길이, 리모트 호스트의 IP 주소, 및 리모트 호스트상의 포토 번호등의 정보가 저장되고 있습니다.

시큐러티 매니저가 존재하는 경우, 소켓이 리모트 주소에 접속되어 있지 않을 때는 이 메소드는 우선 하등의 시큐러티 체크를 실행합니다. 처음은 p.getAddress(). isMulticastAddress() 가 true 의 경우, 이 메소드는 시큐러티 매니저의 checkMulticast 메소드를, 인수로서 p.getAddress() 를 지정해 호출합니다. 상기의 식의 결과가 false 의 경우, 이 메소드는 대신에 시큐러티 매니저의 checkConnect 메소드를, 인수로서 p.getAddress(). getHostAddress()p.getPort() 를 지정해 호출합니다. 이러한 조작이 허가되어 있지 않은 경우, 시큐러티 매니저의 각 메소드 호출의 결과는 SecurityException 가 되는 일이 있습니다.

파라미터:
p - 송신되는 DatagramPacket
예외:
IOException - 입출력 에러가 발생했을 경우
SecurityException - 시큐러티 매니저가 존재해, 시큐러티 매니저의 checkMulticast 메소드 또는 checkConnect 가 송신을 허가하지 않는 경우
PortUnreachableException - 현재 도달 불가능한 접속 먼저 소켓이 접속되는 경우에 슬로우 되는 일이 있다. 예외의 슬로우가 프로텍션되는 것은 아니다
IllegalBlockingModeException - 이 소켓에 관련하는 채널이 존재해, 그 채널이 비블로킹 모드의 경우
관련 항목:
DatagramPacket , SecurityManager.checkMulticast(InetAddress) , SecurityManager.checkConnect(java.lang.String, int)

receive

public void receive(DatagramPacket  p)
             throws IOException 
이 소켓으로부터의 데이터 그램 패킷을 수신합니다. 이 메소드가 복귀하면(자),DatagramPacket 의 버퍼에는 수신한 데이터가 저장됩니다. 데이터 그램 패킷에는 송신자의 IP 주소와 송신자의 머신의 포토 번호도 저장되고 있습니다.

이 메소드는 데이터 그램이 수신될 때까지 블록 하고 있습니다. 데이터 그램 패킷 오브젝트의 length 필드는 수신되는 메세지의 길이의 정보를 포함하고 있습니다. 메세지가 패킷보다 긴 경우, 메세지는 패킷의 길이에 잘라 채울 수 있습니다.

시큐러티 매니저가 존재하는 경우, 시큐러티 매니저의 checkAccept 메소드가 패킷의 수신을 허가하지 않을 때는 패킷의 수신은 행해지지 않습니다.

파라미터:
p - 수신한 데이터를 보존하는 DatagramPacket
예외:
IOException - 입출력 에러가 발생했을 경우
SocketTimeoutException - setSoTimeout 가 이전에 불려 가, 타임 아웃이 지났을 경우
PortUnreachableException - 현재 도달 불가능한 접속 먼저 소켓이 접속되는 경우에 슬로우 되는 일이 있다. 예외의 슬로우가 프로텍션되는 것은 아니다
IllegalBlockingModeException - 소켓에 관련한 채널이 존재해, 그 채널이 비블로킹 모드의 경우
관련 항목:
DatagramPacket , DatagramSocket

getLocalAddress

public InetAddress  getLocalAddress()
소켓의 바인드처의 로컬 주소를 취득합니다.

시큐러티 매니저가 존재하는 경우, 우선 시큐러티 매니저의 checkConnect 메소드가, 인수로서 호스트 주소 및 -1 을 지정해 불려 가 이 조작이 허가되고 있는지 어떤지를 확인합니다.

반환값:
소켓의 바인드처의 로컬 주소. 소켓이 바인드 되지 않는가, 혹은 시큐러티 매니저 checkConnect 메소드가 이 조작을 허가하지 않는 경우는 임의의 로컬 주소를 나타내는 InetAddress
도입된 버젼:
1.1
관련 항목:
SecurityManager.checkConnect(java.lang.String, int)

getLocalPort

public int getLocalPort()
이 소켓의 바인드처가 되는 로컬 호스트상의 포토 번호를 돌려줍니다.

반환값:
이 소켓의 바인드처가 되는 로컬 호스트상의 포토 번호

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException 
지정된 대기 시간 (밀리 세컨드 단위)을 사용해, SO_TIMEOUT 를 유효 또는 무효로 합니다. 이 옵션에 제로 이외의 대기 시간을 설정했을 경우, 이 DatagramSocket 에 대해서 receive()를 호출하면(자), 설정한 시간만 블록 됩니다. 대기 시간이 경과하면(자), DatagramSocket 는 유효한 그대로로 java.net.SocketTimeoutException 가 발생합니다. 이 옵션은 블록 조작에 들어가기 전에 유효하게 해 둘필요가 있습니다. 대기 시간에는 0 보다 큰 값을 지정합니다. 대기 시간에 제로를 지정하면(자), 대기 시간은 무한이라고 해석됩니다.

파라미터:
timeout - 밀리 세컨드로 나타내지는 지정된 대기 시간
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
getSoTimeout()

getSoTimeout

public int getSoTimeout()
                 throws SocketException 
SO_TIMEOUT 의 설정을 취득합니다. 이 옵션이 무효 (대기 시간이 무한)의 경우는 0 을 돌려줍니다.

반환값:
SO_TIMEOUT 의 설정
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
도입된 버젼:
JDK1. 1
관련 항목:
setSoTimeout(int)

setSendBufferSize

public void setSendBufferSize(int size)
                       throws SocketException 
SO_SNDBUF 옵션을, 이 DatagramSocket 로 지정된 값으로 설정합니다. SO_SNDBUF 옵션은 사용하는 네트워크 입출력 버퍼의 사이즈를 설정하는 힌트로서 네트워크 구현이 사용합니다. 또, 네트워크 구현은 이 소켓으로 송신할 수 있는 패킷의 최대 사이즈를 판정하기 위해서도 SO_SNDBUF 설정을 사용합니다.

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

버퍼 사이즈를 크게 하면(자), 송신 속도가 높은 경우에 네트워크 구현에 의해 복수의 송신 패킷을 큐에 넣는 것이 가능하게 됩니다.

주: #send() 를 사용해 SO_SNDBUF 의 설정보다 큰 DatagramPacket 를 송신하는 경우, 패킷이 송신될까 파기될까는 구현에 따라서 다릅니다.

파라미터:
size - 송신 버퍼용으로서 설정하는 사이즈. 0 보다 큰 값을 지정할 필요가 있다
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
IllegalArgumentException - 치가 0 또는 부의 값인 경우
관련 항목:
getSendBufferSize()

getSendBufferSize

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

반환값:
DatagramSocket 의 SO_SNDBUF 옵션의 값
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
관련 항목:
setSendBufferSize(int)

setReceiveBufferSize

public void setReceiveBufferSize(int size)
                          throws SocketException 
SO_RCVBUF 옵션을, 이 DatagramSocket 로 지정된 값으로 설정합니다. SO_RCVBUF 옵션은 사용하는 네트워크 입출력 버퍼의 사이즈를 설정하는 힌트로서 네트워크 구현이 사용합니다. 또, 네트워크 구현은 이 소켓으로 수신할 수 있는 패킷의 최대 사이즈를 판정하기 위해서도 SO_RCVBUF 설정을 사용합니다.

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

SO_RCVBUF 의 값을 크게 하면(자),#receive() 를 사용한 수신보다 빠르게 패킷이 도달하는 경우에, 네트워크 구현에 의한 복수의 패킷의 버퍼링이 가능하게 되는 경우가 있습니다.

주: SO_RCVBUF 보다 큰 패킷을 수신할 수 있을지 어떨지는 구현에 따라서 다릅니다.

파라미터:
size - 수신 버퍼용으로서 설정하는 사이즈. 0 보다 큰 값을 지정할 필요가 있다
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
IllegalArgumentException - 치가 0 또는 부의 값인 경우
관련 항목:
getReceiveBufferSize()

getReceiveBufferSize

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

반환값:
DatagramSocket 의 SO_RCVBUF 옵션의 값
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
관련 항목:
setReceiveBufferSize(int)

setReuseAddress

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

UDP 소켓의 경우, 복수의 소켓을 같은 소켓 주소에 바인드 하는 것이 필요하게 되는 일이 있습니다. 멀티 캐스트 패킷을 수신하기 위해서는 통상 이와 같이 합니다 (#java.net.MulticastSocket 를 참조). bind(SocketAddress) 를 사용해 소켓을 바인드 하기 전에 SO_REUSEADDR 소켓 옵션이 유효하게 되어 있으면,SO_REUSEADDR 소켓 옵션을 사용해 복수의 소켓을 동일한 소켓 주소에 바인드 할 수가 있습니다.

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

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

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

getReuseAddress

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

반환값:
SO_REUSEADDR 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
setReuseAddress(boolean)

setBroadcast

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

파라미터:
on - 브로드캐스트를 온으로 할지 어떨지를 지정
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
getBroadcast()

getBroadcast

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

반환값:
SO_BROADCAST 가 유효한가 어떤가를 나타내는 boolean
예외:
SocketException - 기본이 되는 프로토콜로 UDP 에러등의 에러가 발생했을 경우
도입된 버젼:
1.4
관련 항목:
setBroadcast(boolean)

setTrafficClass

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

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

주:

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

  • IPTOS_LOWCOST (0x02)
  • IPTOS_RELIABILITY (0x04)
  • IPTOS_THROUGHPUT (0x08)
  • IPTOS_LOWDELAY (0x10)
최하정도 비트는 MBZ (0 이 아니면 안된다) 비트에 대응하므로, 항상 무시됩니다.

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

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

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

getTrafficClass

public int getTrafficClass()
                    throws SocketException 
이 DatagramSocket 로부터 송신되는 패킷의 IP 데이터 그램 헤더의 트래픽 클래스 또는 서비스 타입을 취득합니다.

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

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

close

public void close()
이 데이터 그램 소켓을 닫습니다.

현재 이 소켓의 {#link receive} 로 블록 떠날 수 있어 모든 thread가 SocketException 를 슬로우 합니다.

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


isClosed

public boolean isClosed()
소켓이 닫았는지 어떠했는지를 돌려줍니다.

반환값:
소켓이 닫았을 경우는 true
도입된 버젼:
1.4

getChannel

public DatagramChannel  getChannel()
이 데이터 그램 소켓에 관련하는 고유의 DatagramChannel 오브젝트를 돌려줍니다 (존재하는 경우).

채널 자체가 DatagramChannel.open 메소드를 사용해 작성되었을 경우에만, 데이터 그램 소켓에 채널이 존재합니다.

반환값:
이 데이터 그램 소켓에 관련하는 데이터 그램 채널. 이 소켓이 채널용으로 작성되지 않았던 경우는 null
도입된 버젼:
1.4

setDatagramSocketImplFactory

public static void setDatagramSocketImplFactory(DatagramSocketImplFactory  fac)
                                         throws IOException 
어플리케이션의 데이터 그램 소켓 구현 팩토리를 설정합니다. 팩토리를 설정할 수 있는 것은 1 회 뿐입니다.

어플리케이션으로 새로운 데이터 그램 소켓을 작성하면(자), 소켓 구현 팩토리의 createDatagramSocketImpl 메소드가 불려 가 실제의 데이터 그램 소켓 구현이 작성됩니다.

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

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

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

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

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.