관련 Java 클래스 소개
Datagramsocket
public class DatagramSocket extends Object
이 클래스는 데이터 그램 패킷을 보내고받는 데 사용되는 소켓을 나타냅니다.
데이터 그램 소켓은 패킷 배달 서비스를 보내거나받는 지점입니다. 데이터 그램 소켓에서 보내거나 수신 한 각 패킷은 주소 지정되고 별도로 라우팅됩니다. 한 기계에서 다른 기계로 전송 된 여러 패킷은 다른 경로를 선택하거나 다른 순서로 도착할 수 있습니다.
UDP 방송 전송은 항상 데이터 그램에서 활성화됩니다. 브로드 캐스트 패킷을 받으려면 데이터 그램 소켓이 와일드 카드 주소에 바인딩되어야합니다. 일부 구현에서는 더 구체적인 주소에 묶일 때 방송 패킷을 수신 할 수도 있습니다.
데이터는 Datagramsocket의 송신 및 수신을 통해 전송 및 수신 할 수 있습니다.
public void receive(DatagramPacket p) throws IOException
이 소켓에서 데이터 그램 패킷을받습니다. 이 메소드가 반환되면 DataGrampacket의 버퍼가 수신 된 데이터로 채워집니다. 데이터 그램 패킷에는 발신자의 IP 주소와 발신자의 컴퓨터의 포트 번호도 포함되어 있습니다.
이 방법은 데이터 그램이 수신 될 때까지 차단됩니다. 데이터 그램 패킷 객체의 길이 필드에는 수신 된 정보의 길이가 포함됩니다. 정보가 패킷의 길이보다 길면 정보가 단축됩니다.
보안 관리자가 존재하고 보안 관리자의 CheckCept 방법이 수신 작업을 허용하지 않으면 패킷을 수신 할 수 없습니다.
매개 변수 :
P- Datagrampacket은 들어오는 데이터를 배치합니다.
던지다:
IOException- I/O 오류가 발생하는 경우.
SockettimeOutException -SetSotimeout이 이전에 호출되고 타임 아웃 값이 만료 된 경우.
PortunreachableException- 소켓이 현재 도달 할 수없는 대상에 연결되면 던질 수 있습니다. 예외가 발생할 것이라는 보장은 없습니다.
불법 블로킹 modeexception-이 소켓에 관련 채널이 있고 채널이 차단 모드 인 경우.
public void send(DatagramPacket p) throws IOException
이 소켓에서 데이터 그램 패킷을 보냅니다. Datagrampacket은 다음을 나타내는 정보를 포함합니다 : 전송 될 데이터, 길이, 원격 호스트의 IP 주소 및 원격 호스트의 포트 번호
보안 관리자가 존재하고 소켓이 현재 원격 주소에 연결되지 않은 경우이 방법은 먼저 일부 보안 검사를 수행합니다. 먼저, p.getAddress (). ismulticastAddress ()가 true 인 경우이 메소드는 P.GetAddress ()를 매개 변수로 호출합니다. 표현식 값이 False 인 경우이 방법은 p.getAddress (). gethostAddress () 및 p.getport ()로 보안 관리자의 CheckConnect 메소드를 호출하는 데 사용됩니다. 작업이 허용되지 않으면 보안 관리자 메소드에 대한 각 호출은 SecurityException을 초래합니다.
매개 변수 :
p-datagrampacket을 전송합니다.
던지다:
IOException- I/O 오류가 발생하는 경우.
SecurityException- 보안 관리자가 존재하고 체크 무늬 또는 CheckConnect 메소드가 전송을 허용하지 않는 경우.
PortunreachableException- 소켓이 현재 도달 할 수없는 대상에 연결되면 던질 수 있습니다. 예외가 발생할 것이라는 보장은 없습니다.
불법 블로킹 modeexception-이 소켓에 관련 채널이 있고 채널이 차단 모드 인 경우.
Datagrampacket
public final class DatagramPacket extends Object
이 유형은 UDP 데이터 그램 패킷을 나타냅니다.
건축 방법 :
DatagramPacket(byte[]buf,intlength)
길이의 데이터 패킷을 받도록 Datagrampacket을 구성하십시오
DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)
지정된 호스트의 지정된 포트 번호로 길이 패킷을 보낼 데이터 그램 패킷 구성
UDP 그룹 채팅 시스템의 예
UDP는 연결없이 연결됩니다. 그룹 채팅은 모든 사람이 메시지를 받도록 방송 주소 (방송 주소)로 데이터를 보내는 것입니다. 스레드 메소드를 사용하여 발신자 스레드와 수신자 스레드를 시작하면 발신자는 출력에 따라 키보드 입력을 읽고 수신기는 입력 정보를 읽고 표시합니다.
보내는 사람
udpsender.java
패키지 cn.xidian.socket; import java.io.bufferedReader; import java.io.ioException; import java.io.inputStreamReader; import java.net.datagrampacket; import java.net.datagramsocket; import java.net.inetAddress; public class udpsender streld {@override void voidectends rood {@override {// UDP Service DataGramsocket Socket = New Datagramsocket (); // 시스템 입력 버퍼드 리더에서 입력을 읽으려면 데이터 패킷을 준비합니다. in = new bufferedReader (system.in); String line = null; while (line = in.readline ()) {// writed the test. 그룹 채팅은 예를 들어 방송 주소를 작성해야합니다 (예 : 192.168.137.255datagrampacket data = new datagrampacket) SocketSocket.close ();} catch (ioexception e) {e.printstacktrace ();}}}수화기
udpreceiver.java
패키지 cn.xidian.socket; import java.io.ioexception; import java.net.datagrampacket; import java.net.datagramsocket; public class udpreceiver 확장 스레드 {@override public void run () {// UDP Service 생성 및 포트 데이터 포장물을 듣습니다. 바이트 [] temp = new Byte [1024]; datagrampacket data = new datagrampacket (temp, temp.length); boolean flag = true; while (flag) {socket.receive (data); wentput string string senderaddress = data.getAddress (). data.getAddress (). gethostname (); system.out.println (senderhostname+"("+senderaddress+")"+"says :"+new string (temp, 0, data.getlength ());주요 방법
udpmain.java
package cn.xidian.socket; public class udpmain {public static void main (String [] args) {// start udpreceiver receiver = new udpreceiver (); receiver.start (); // start udpsend udpsender sender = new Udpsender (); restar.start ();테스트 결과
입력 당사자는 출력으로 키보드 입력을 읽고 수신자는 메시지를 수신하고 발신자의 IP 및 호스트 이름을 표시합니다.
요약
위는 UDP를 사용하여 그룹 채팅 시스템 코드 예제를 구축하는 Java 프로그래밍에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!