Simple UDP server & client socket 예제
DatagramSocket 및 DatagramPacket 사용법만 기억
ex)
public class DatagramTest {
public DatagramTest() {
super();
new Thread() {
public void run() {
startUDPServer();
}
}.start();
new Thread() {
public void run() {
startUDPClient();
}
}.start();
}
private void startUDPServer() {
DatagramSocket server = null;
try {
server = new DatagramSocket(9999);//server 생성
int bufferLength = 256;
byte[] buffer = new byte[bufferLength];
DatagramPacket packet //data 받기 위한 객체를 buffer와 length 크기를 byte 배열로 지정하여 생성
= new DatagramPacket(buffer, bufferLength);
while(true) {
System.out.println("server : waiting for request.");
server.receive(packet);
int dataLength = packet.getLength();
System.out.println("server : received. Data length : "+ dataLength);
//get byte from packet and get it string
String data = new String(packet.getData(), 0 , dataLength);//
System.out.println("received data : "+data);
if( data.equals("EXIT")) {
System.out.println("stop datagram server");
break;
}
}
System.out.println("--------------");
} catch (Exception e) {
e.printStackTrace();
}finally {
if(server != null)
server.close();
}
}
private void startUDPClient() {
for (int loop= 0 ; loop < 3 ; loop++) {
sendDatagramData("I hate UPD : "+ new Date());
}
sendDatagramData("EXIT");
}
private void sendDatagramData(String data) {
try {
DatagramSocket client = new DatagramSocket();
/*받을 서버 지정*/
InetAddress address = InetAddress.getByName("127.0.0.1");
//byte array로 변환
byte[ ] buffer = data.getBytes();
//DatagramPacket 생성 및 포트 지정.
DatagramPacket packet
= new DatagramPacket(buffer, 0 , buffer.length, address, 9999);
client.send(packet);
System.out.println("Client: send Data");
client.close();
Thread.sleep(1000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
출처 : 자바의 신
'java' 카테고리의 다른 글
| 코테 유용한 함수 모음 (JAVA) (0) | 2022.01.08 |
|---|---|
| try with resource 구문 예제 (JAVA 7) (0) | 2019.09.24 |
| Simple server & client socket 예제 (0) | 2019.09.22 |
| Buffer class의 이해 (0) | 2019.09.22 |
| NioSample (0) | 2019.09.22 |