/******************************************************************************
* 파일 : UDPTimeClient.java
* 용도 : UDP Client
* 작성자 : 성홍제
* 작성일 : 2006. 08. 10
* Version : 1.0
******************************************************************************/
package Client;
import java.net.*;
public class UDPTimeClient
{
public static void main(String[] args)
{
/*if(args.length != 2)
{
System.out.println("사용법 : java UDPEchoClient ip port");
System.exit(1);
}
String ip = args[0];
int port = 0;
try
{
port = Integer.parseInt(args[1]);
}
catch(Exception ex)
{
System.out.println("port 번호는 양의 정수로 입력하여 주세요.");
System.exit(1);
}*/
String ip = "61.109.232.157";
int port = 9999;
InetAddress inetaddr = null;
try
{
inetaddr = InetAddress.getByName(ip);
}
catch (UnknownHostException e)
{
System.out.println("잘못된 도메인이나 ip입니다.");
System.exit(1);
}
DatagramSocket dsock = null;
try
{
// 클라이언트의 데이터그램소켓은 패킷에 서버의 주소와 포트를 넣어주므로
// 생성자에 아무런 인자가 필요없다.
dsock = new DatagramSocket();
String line = null;
// 전송
// 일단 아무런 내용도 없는 패킷을 보내서
// 서버가 클라이언트의 위치를 알 수 있게 해준다.
DatagramPacket sendPacket = new DatagramPacket("".getBytes(),
"".getBytes().length,
inetaddr,
port);
dsock.send(sendPacket);
byte[] buffer = new byte[200];
DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
dsock.receive(receivePacket);
// 받은 결과 출력.
String msg = new String(receivePacket.getData(),
0,
receivePacket.getData().
length);
System.out.println("서버로 부터 전달받은 시간 :" + msg.trim());
}
catch(Exception ex)
{
System.out.println(ex);
}
finally
{
if(dsock != null)
dsock.close();
}
} // main
} // class
/******************************************************************************
* 파일 : UDPTimeServer.java
* 용도 : UDP Server
* 작성자 : 성홍제
* 작성일 : 2006. 08. 10
* Version : 1.0
******************************************************************************/
package Server;
import java.net.*;
import java.util.*;
public class UDPTimeServer
{
public static void main(String[] args)
{
/*if(args.length != 1)
{
System.out.println("사용법 : java UDPEchoServer port");
System.exit(1);
}
int port = 0;
try
{
port = Integer.parseInt(args[0]);
}
catch(Exception ex)
{
System.out.println("port 번호는 양의 정수로 입력하여 주세요.");
System.exit(1);
}*/
int port = 9999;
DatagramSocket dsock = null;
try
{
System.out.println("접속 대기상태입니다.");
dsock = new DatagramSocket(port);
String line = null;
while(true)
{
// 받기
byte[] buffer = new byte[1024];
// TCP와는 다르게 소켓으로 계속 연결되어있는 것이 아니므로
// 일단 클라이언트의 정보를 얻기 위해서 먼저 받아야 한다.
DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
dsock.receive(receivePacket);
java.text.SimpleDateFormat format
= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String sdate = format.format(new Date());
System.out.println(receivePacket.getAddress().getHostAddress()
+ " 에 현재시간 " + sdate + " 을 전송합니다.");
// 비연결성이므로 보내는 데이터마다 주소와 포트가 필요하다.
// 위에서 먼저 받은 패킷을 이용해서 클라이언트의 주소와 포트 번호를 알아낸다.
DatagramPacket sendPacket = new DatagramPacket(sdate.getBytes(),
sdate.getBytes().length,
receivePacket.getAddress(),
receivePacket.getPort());
// getBytes() - 스트링을 바이트 배열로 바꾸어준다. 스트림으로 전송하기 위해서는
// 바이트 단위로 바꿀 필요가 있다.
dsock.send(sendPacket);
} // while
}
catch(Exception ex)
{
System.out.println(ex);
}
finally
{
if(dsock != null)
dsock.close();
}
} // main
} // class
/******************************************************************************
* 파일 : RadioClient.java
* 용도 : UDP 라디오 클라이언트
* 작성자 : 성홍제
* 작성일 : 2006. 08. 10
* Version : 1.0
******************************************************************************/
package Client;
import java.io.*;
import java.net.*;
public class RadioClient
{
final static int MAXBUFFER = 80;
public static void main(String[] args)
{
/*if (args.length != 1)
* {
System.out.println("사용법: java RadioClient port");
System.exit(0);
}*/
byte buffer[] = new byte[MAXBUFFER];
//int port = Integer.parseInt(args[0]);
int port = 163;
try
{
DatagramSocket socket = new DatagramSocket(port);
DatagramPacket recv_packet;// 수신용 데이터그램 패킷
while (true)
{
recv_packet = new DatagramPacket (buffer, buffer.length);
socket.receive (recv_packet);
// 화면 출력
String result = new String(buffer, 0, recv_packet.getLength());
System.out.println(port + "방송: " + result);
}
}
catch(IOException e)
{
System.out.println(e);
}
}
}
/******************************************************************************
* 파일 : RadioClient.java
* 용도 : UDP 라디오 클라이언트
* 작성자 : 성홍제
* 작성일 : 2006. 08. 10
* Version : 1.0
******************************************************************************/
package Server;
import java.io.*;
import java.net.*;
public class RadioServer
{
final int MAXBUFFER = 512;
void work()
{
byte buffer[] = null;
String[] str = {"배고파~배고파~배고파~배고파~배고파~배고파~배고파~배고파~배고파~배고파~배고파~",
"졸려~~~~~~~~~~~졸려~~~~~~~~~~~졸려~~~~~~~~~~~",
"피곤해~~~~~~~~~피곤해~~~~~~~~~피곤해~~~~~~~~~피곤해~~~~~~~~~",
"휴가 좀 보내주~~~~~~~~~~휴가 좀 보내주~~~~~~~~~~휴가 좀 보내주~~~~~~~~~~",
"뭐냐? 이건",
"잠 잘거야?",
"하고 싶당!"
};
String[] dest = {"128","130","131",
"132",
"133",
"134",
"135",
"136",
"137",
"138",
"139",
"140",
"141",
"142",
"143",
"144",
"145",
"146",
"147",
"148",
"149",
"150",
"151",
"152",
"153",
"154",
"155",
"156",
"157",
"158",
"159",
"160",
"161",
"162",
"163",
"164",
"165",
"166"};
//String[] dest = {"100", "12"};
try
{
DatagramSocket socket = new DatagramSocket();
DatagramPacket send_packet = null;
int i=0;
while(true)
{
buffer = str[i++].getBytes();
for (int j=0; j<dest.length; j++)
{
//send_packet = new DatagramPacket(buffer,
// buffer.length,InetAddress.getByName("70.12.112."+dest[j]), 163);
send_packet = new DatagramPacket(buffer,
buffer.length,InetAddress.getByName("61.109.232."
+dest[j]),163);
socket.send (send_packet);
}
Thread.sleep(1000);
if (i>=str.length)
i=0;
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void main (String[] args)
{
new RadioServer().work();
}
}
'프로그래밍 > Java' 카테고리의 다른 글
HttpURLConnection 사용례 (0) | 2009.01.06 |
---|---|
[펌] HttpURLConnection 을 이용하세요 (0) | 2009.01.02 |
03 졸려.... (0) | 2007.11.27 |
02 2일째.... (0) | 2007.11.27 |
01 Network 첫시간... (0) | 2007.11.27 |