본문 바로가기

JAVA

자바채팅프로그래밍 - UDP소켓이용하여 날짜 출력

 

//서버

import java.net.*;
import java.io.*;
public class UDaytimeClient {
	public static final int PORT = 13;
	
	public static void main(String args[]) {
		byte[] data = new byte[500];
		String hostname = "localhost";
		DatagramPacket sendPacket,Packet;
		DatagramSocket socket;
		String what = "this is string for send message to server";
		
		if(args.length > 0) {
			hostname = args[0];
		}
		
		try {	
			//서버에게 자신을 알리기위한 소켓 만들기
			socket = new DatagramSocket();
			data = what.getBytes();
			Packet = new DatagramPacket(data, data.length,InetAddress.getLocalHost(),PORT); 
			socket.send(Packet);
			
			//소켓받아 출력하기
			sendPacket = new DatagramPacket(data, data.length);
			socket.receive(Packet);		
			String data1 = new String(Packet.getData(),0,Packet.getLength());
			System.out.println(data1);
	
		}catch(SocketException se) {
			System.out.println(se);
		}catch(IOException e) {
			System.out.println(e);
	}

  }
}

 

//클라이언트

--> 서버에서 보내준 시간을 출력하기 위한 클래스

import java.net.*;
import java.io.*;
import java.util.Date;
public class UDaytimeServer {
	public final static int daytimeport =13;
	
	public static void main(String args[]) {
		DatagramPacket sendPacket;
		DatagramSocket socket;
		byte data[]= new byte[200];
			try{
				//클라이언트의 주소를 알기위한 받기소켓
				socket = new DatagramSocket(daytimeport);
				DatagramPacket packet = new DatagramPacket(data, data.length);
				socket.receive(packet);
				
				//날짜를 생성하여 보내준다.
				Date now = new Date();
				data= now.toString().getBytes();				
				sendPacket = new DatagramPacket(data,data.length,InetAddress.getLocalHost(),packet.getPort());
				socket.send(sendPacket);

				
			}catch(SocketException se) {
				System.out.println(se);
			}catch(IOException e) {
				System.out.println(e);
		
			}
	}
}

 

//결과