원래 자바 책을 가지고 공부를 하다가 책을 반납 한 뒤로 인터넷 검색으로 대충 소스를 파악하고 해보았네요.


원래 예제는 클라이언트가 서버에 요청하고 시간을 받는다던지 등등 하는 일인데.


그냥 클라이언트는 서버로 계속 문자열을 보내고 서버는 이를 받아서 계속 처리만 하는 일을 하도록 했습니다.



원래 TCP 관련 공부도 했었는데. 소스 코드를 이리저리 건들이다 보니까 뭔가 이상해져서... 올릴 수가...



클라이언트 소스

import java.net.*;

import java.util.Scanner;


public class Main {

public static void main(String args[])

{

byte[] msg = new byte[100];

try{

DatagramSocket ds = new DatagramSocket();

InetAddress address = InetAddress.getByName("127.0.0.1");

Scanner sc = new Scanner(System.in);

byte[] buffer = new byte [100];

DatagramPacket inPacket = new DatagramPacket(buffer, buffer.length);


while(true)

{

msg = sc.nextLine().getBytes();

DatagramPacket outPacket = new DatagramPacket(msg, msg.length, address, 7777);

ds.send(outPacket);

ds.receive(inPacket);

String packetMsg = new String(inPacket.getData());

System.out.println(packetMsg);

}

} catch (Exception e){

e.printStackTrace();

}

}

}



서버 소스
import java.net.*;
import java.io.*;

public class Main {

public static void main(String args[])
{
DatagramSocket ds;
try {
ds = new DatagramSocket(7777);
byte[] buffer = new byte[100];
DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
while (true){
for(int i=0; i<buffer.length; i++)
{
buffer[i] = 0;
}
ds.receive(dp);
String msgStr = new String(dp.getData());
System.out.println(dp.getAddress() + ":" + dp.getPort() + " " + msgStr);
ds.send(new DatagramPacket("전송 완료".getBytes(), "전송 완료".length(), dp.getAddress(), dp.getPort()));
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}






UDP는 TCP와 달리 소켓을 서버에서 그냥 열어두고 클라이언트는 패킷을 만들어서 걍 받든 안받든 관심 없이 투척합니다.

받으면 받은거고 말면 마는거고...?


여하튼 TCP처럼 서로 연결하고 통신을 하는 것이 아니기 때문에 여러 클라이언트에 적합하겠지요.

TCP와 UDP의 두 프로토콜간 속도 비교라던지~ 데이터의 손실이라던지~ 이런건 다른 곳이나 책으로 ㅋㅋㅋ;


uc.jar

us.jar


uc는 클라이언트 파일

us는 서버 파일 입니다.


명령 프롬프트로 가셔서 해당 파일이 저장된 주소로 가셔서


java -jar uc.jar 이런식으로 실행하시면 됩니다.


'프로그래밍 > Java' 카테고리의 다른 글

[Java] 난수(Random)  (0) 2017.02.01
[Java] 쓰레드 프로그래밍  (0) 2017.01.04
[Java] 익명 클래스 관련 문법 유형들  (0) 2016.08.11
[Java] 구구단 퀴즈  (0) 2016.07.09