Java SE/DatagramSocket 03

DatagramSocket 03

Soul-Learner 2008. 4. 18. 17:26

숫자를 전송하면 구구단이 완성되어 돌아온다

숫자를 보내고 구구단을 받아 출력하는 내용의 소스

import java.net.*;
import java.io.*;
/*숫자를 수신측에 전송하고 완성된 구구단을 수신하여 화면에 출력한다*/
class DatagramSendReceive03 {
 public static void main(String[] args)  throws Exception {

  byte[] data = {5};
  DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 1234);
  DatagramSocket ds = new DatagramSocket(12345); // 수신도 하려면 포트번호가 필요함

  ds.send(dp);
  System.out.println("파일데이터 전송완료");

  byte[] buf = new byte[1024];
  DatagramPacket dpReceive = new DatagramPacket(buf, buf.length);
  ds.receive(dpReceive);

  byte[] dataReceived = dpReceive.getData();
  int len = dpReceive.getLength();
  System.out.println(new String(dataReceived, 0, len));

  ds.close();
 }
}




숫자를 받아서 구구단을 완성하고 다시 수신측으로 전송해 주는 내용의 소스

import java.net.*;
import java.io.*;
/* 송신측에서 전송한 데이터를 수신하여 구구단을 완성하여 다시 전송한다*/
class DatagramReceiveSend03 {
 public static void main(String[] args) throws Exception {

  byte[] buf = new byte[4096];
  DatagramPacket dp = new DatagramPacket(buf, buf.length);
  DatagramSocket ds = new DatagramSocket(1234);

  System.out.println("데이터 기다림");

  ds.receive(dp);
  byte[] data = dp.getData();
  int len = dp.getLength();
  System.out.println("데이터 수신됨");

  String str = "";
  for(int i=1;i<=9;i++) {
   str += data[0]+ " x " + i + " = " + (data[0]*i)+"\n";
  }

  data = str.getBytes();
  DatagramPacket dp1 = new DatagramPacket(data, data.length, dp.getAddress(), 12345);
  ds.send(dp1);
  System.out.println("데이터 송신완료");
  ds.close();
 }
}