
버퍼 타겟 (파일의 경로)
- 상대 경로 - 실행되는 위치를 기반으로 경로를 정하는 것
- 절대 경로 - 루트에서부터 경로를 찾는 것
⇒ 파일 실행 시 src에 있는 파일이 아니라 out에 있는 파일에서 실행
- 컴파일 실행 시 파일이 out에 생성 → context는 프로젝트 내부에서 실행
- 윈도우 → c:\workspace\hello.txt - 최상위 경로로 시작
- 맥, 리눅스 → \workspace\hello.txt
// 상대 경로 : 내 파일(.class)에 위치를 기반으로 경로 정하는 것
// 절대 경로 : 루트에서 부터 경로를 찾는 것
// 윈도우 : C:\workspace\hello.txt
// 맥,리눅스 : /workspace/hello.txt
public class StreamEx05 {
public static void main(String[] args) {
try {
// 절대경로
//BufferedReader br = new BufferedReader(new FileReader
//("D:\\workspace\\java_lec\\study\\out\\production\\study\\ex\\ex15\\hello.txt"));
// 상대경로
BufferedReader br = new BufferedReader(new FileReader
("src\\ex\\ex15\\hello.txt"));
String line = br.readLine();
System.out.println(line);
BufferedWriter bw = new BufferedWriter(new FileWriter("input.txt"));
bw.write("안녕");
bw.write("반가워\n");
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
절대 경로와 상대 경로 확인 방법

상단 - 절대 경로 / 하단 - 상대 경로


상대 경로 확인



통신
Simplex (단방향)
- 프로토콜은 서로 알려줘야 함

socket (최소 2개 필요)
- 외부 컴퓨터랑 연결하기 위해서는 file이 socket이 되어야 한다.
- socket이 많으면 타겟 설정 가능
- 클라이언트가 요청하면 연결되는 serve socket을 자동 생성
- thread도 socket 생성과 함께 필요
- socket은 모두 port를 가진다.

port

- 서버는 외부 전봇대 선을 바로 연결해야 실행 가능
- 외부선을 wi-fi(공유기)에 연결해서 공인 IP를 받아 각 PC의 port에 따라 서버 사용

단방향 예제
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(10000);
Socket socket = serverSocket.accept(); // 리스너
System.out.println("클라이언트 연결됨");
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream(), "UTF-8")
);
while (true) {
String msg = br.readLine();
if (msg == null) break;
System.out.println(msg);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
// localhost = 127.0.0.1 (루프백)
try {
Socket socket = new Socket("127.0.0.1", 10000);
// 가나다라abc
// 보조 스트림 생성 = 보조 스트림에 버퍼 설정으로 감싸기
//(소켓 방향 설정, UTF-8로 읽을 수 있게 설정)
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream(), "UTF-8")
);
bw.write("msg1" + "\n");
bw.write("msg2" + "\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
실행방법






루프백 IP - 자신의 컴퓨터를 의미하는 키워드 ⇒ 127.0.0.1
개발할 때
printStackTrace
사용해서 오류를 자세히 보는 것이 좋다.Share article