DatagramSocket 02
DatagramSocket 을 이용하여 송신측에서 소스파일을 수신측에 보내면 수신측에서는 그 데이터를 텍스트파일에 저장하는 예
송신측 소스
import java.net.*;
import java.io.*;
/*현재 소스파일을 수신측에 전송한다*/
class DatagramSend02 {
public static void main(String[] args) throws Exception {
BufferedInputStream bin = new BufferedInputStream(new FileInputStream("DatagramSend02.java"));
ByteArrayOutputStream bao = new ByteArrayOutputStream();
byte[] buf = new byte[128];
int read = 0;
while((read=bin.read(buf, 0, buf.length))!= -1) {
bao.write(buf, 0, read);
}
byte[] fileData = bao.toByteArray();
DatagramPacket dp = new DatagramPacket(fileData, fileData.length, InetAddress.getByName("localhost"), 1234);
DatagramSocket ds = new DatagramSocket();
ds.send(dp);
ds.close();
bin.close();
bao.close();
System.out.println("파일데이터 전송완료");
}
}
수신측 소스
import java.net.*;
import java.io.*;
/* 송신측에서 전송한 데이터를 수신하여 텍스트파일에 저장한다*/
class DatagramReceive02 {
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();
//System.out.println(new String(data, 0, dp.getLength()));
FileOutputStream fout = new FileOutputStream("copy.txt");
fout.write(data, 0, dp.getLength());
fout.close();
ds.close();
}
}