try 구문 밖에서 사용할 스트림 객체 참조변수 선언
try 구문 안에서 스트림 객체 생성 및 사용(읽기,쓰기)
finally 구문안에서 사용한 스트림 close
InputStream
read()
read(byte[] b)
read(byte[] b, int off, int length)
OutputStream
write(int a)
write(byte[] a)
write(byte[] b, int off, int length)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReaderTest {
public static void main(String[] args) {
BufferedReader in = null;
BufferedWriter out = null;
try{
out = new BufferedWriter(new FileWriter("data.txt"));
out.write("꿈에 미치면 신화가 된다");
out.append(".");
out.flush();
in = new BufferedReader(new FileReader("data.txt"));
// int c;
// while( (c = in.read()) != -1)
// System.out.print((char) c);
String msg = null;
while ((msg = in.readLine()) != null)
System.out.println(msg);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null)
in.close();
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}}}}
보조 스트림
문자 변환 보조 스트림
바이트스트림 -> InputStreamReader -> 문자스트림
문자스트림 -> OutputStreamWriter -> 바이트스트림
import java.io.BufferedReader;//import java.io.BufferedWriter; //import java.io.FileInputStream;
import java.io.FileReader; //import java.io.FileWriter; //import java.io.IOException;
import java.io.InputStreamReader; //import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// BufferedReader in = null;
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("log.txt"));// 스트림 객체 생성
while (true) {
System.out.println("기록할 내용을 입력 : ");
String msg = scan.nextLine();
if (msg.equals("quit"))
break;
writer.write(msg + "\n");// 이 코드를 사용자가 quit를 입력할때까지 반복
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null)
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
·서버(Server): 사용자들에게 서비스를 제공하는 컴퓨터
·클라이언트(Client): 서버에게 서비스를 요청해서 사용하는 컴퓨터
·DNS(Domain
Name System): 숫자 대신 기호를 사용하는
주소
·DNS 서버: 기호 주소를
숫자 주소가 변환해주는 서버
·URL(Uniform
Resource Locator): 인터넷 상의
자원을 나타내는 약속
·포트(port): 가상적인 통신 선로
*데이터를 받는 쪽은 포트를 열고 대기 // <- 프로그램이 OS로부터 포트를 점유
데이터를 보내는 쪽은 상대방의 IP,port를 목적지로 데이터를 전달 // IP,port<- 데이터를 송수신하기 위한 정보의 집합(Socket)
자바에서 ip는 InetAddress라는 타입의 자료형으로 분리
·프로토콜(protocol): 통신을 하기 위한 약속
·TCP(Transmission
Control Protocol)는 신뢰성있게
통신하기 위하여 먼저 서로 간에 연결을 설정한 후에 데이터를 보내고 받는 방식
·UDP(User
Datagram Protoocol)는 데이터를 몇 개의 고정 길이의 패킷(다이어그램이라고
불린다)으로 분할하여 전송
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UdpSender {
public static void main(String[] args) {
try {
InetAddress ip = InetAddress.getByName("70.12.109.114");
//UDP전송 순서 // 소켓 생성 // 보낼 데이터를 바이트 배열로 준비
//준비한 바이트 배열을 목적지 주소와 목적지 포트 번호를 포함해 패킷으로 준비
//소켓을 통해 패킷 전송
DatagramSocket socket = new DatagramSocket();
//데이터를 받고자 할때는 소켓 생성자에 사용할 포트번호 기재
//보내기만 할때는 안써도 됨//안쓰면 내부적 임시포트 받아씀
String msg = "안녕 UDP로 데이터를 보내는거야";
byte[] buf = msg.getBytes();
DatagramPacket packet = new DatagramPacket(buf,buf.length,ip,5000);
socket.send(packet);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
//UDP데이터 수신하기
//수신할 포트를 적어서 소켓 생성
//수신할 데이터가 저장될 빈 바이트 배열을 준비
//수신할 데이터가 저장될 빈 패킷을 위 배열과 연결해서 준비
//소켓에 준비한 빈 패킷을 담아 수신
public class UdpReceiver {
public static void main(String[] args) {
try{
DatagramSocket socket = new DatagramSocket(5000);
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf,buf.length);
System.out.println("수신을 기다리는중......");
socket.receive(packet);
System.out.println("수신완료");
System.out.println(new String(buf));
}catch(SocketException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
SVN(subversion) : 프로젝트 협업 관리 도구