반응형
클라이언트
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class UDPEchoClient {
public static void main(String args[]) throws IOException {
int svrPort = 1234;
int clnPort = 4321;
String sbye = "";
Scanner cin = new Scanner(System.in);
DatagramSocket dgSocket = new DatagramSocket(clnPort);
InetAddress remote_addr = InetAddress.getByName("127.0.0.1");
do {
System.out.print("전송할 메시지 : ");
String msg = cin.nextLine().stripTrailing();
if(msg.length() == 0) continue;
DatagramPacket dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, remote_addr, svrPort);
System.out.println("송신 메시지 크기 : " + dgPacket.getData().length);
dgSocket.send(dgPacket);
dgPacket = new DatagramPacket(new byte[100], 100);
dgSocket.receive(dgPacket);
msg = new String(dgPacket.getData(), 0, dgPacket.getLength());
msg = msg.stripTrailing();
System.out.printf("\n수신메시지 : %s\n메시지 크기 : %d\n\n", msg, msg.length());
sbye = msg;
}while (!sbye.endsWith("bye"));
dgSocket.close();
}
}
서버
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPEchoServer {
public static void main(String args[]) throws IOException {
int svrPort = 1234;
int clnPort = 4321;
String sbye = "";
//서버용 데이터그램 소켓 오브젝트 생성
DatagramSocket dgSocket = new DatagramSocket(svrPort);
System.out.println("서버 실행중");
do {
//최대 ㅅ수신 가능 크기는 65507바이트지만 100으로 설정정
DatagramPacket dgPacket = new DatagramPacket(new byte[100], 100);
//패킷 수신
dgSocket.receive(dgPacket);
String msg = new String(dgPacket.getData(), 0 , dgPacket.getLength());
msg = msg.stripTrailing();
System.out.printf("수신메시지 : %s 메시지 크기 : %d \n", msg, msg.length());
dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, dgPacket.getAddress(), clnPort);
dgSocket.send(dgPacket);
sbye = msg;
} while (!sbye.endsWith("bye"));
dgSocket.close();
}
}
UDP 소켓을 활용한 양방향 통신 예제
반응형
'잡개발' 카테고리의 다른 글
자바 파일 입출력 구현 (0) | 2022.05.12 |
---|---|
파워쉘 기기정보 유출 악성코드 (0) | 2022.05.10 |
최근댓글