본문 바로가기

JAVA/Syntax

Network 프로그래밍


IP 주소 : 네트워크에 연결된 컴퓨터들이 부여받은 주소 [IPv4 주소가 꽉차서 이제 IPv6로 넘어가는 추세]


네트워크 프로그래밍 과정


1. 연결 Socket = new Socket("IP주소" :String , portNo : int);

ㄴ1.1 필요하면 필터를 추가한다.

< 1byte 통신 전용 >

-- 파일을 읽어서 소켓으로 출력하는 패턴

FileInputStream fis = new FileInputStream(new File(file));이라던지

OutputStream os = socket.getOutputStream();     

               

-- 소켓으로 받아 읽은 후, 파일에다 출력하는 패턴

FileOutputStream fos = new FileOutputStream(new File(file));이라던지

InputStream is = socket.getInputStream();

----------------------------------------------------------------------------

< 2byte 통신 전용 >

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

PrintWriter pw = new PrintWriter(socket.getOutputStream());



2. I/O

(1) 키보드 입력하여 연결된 곳으로 출력

while (!(str = br.readLine()).isEmpty()) {

pw.println(str);

pw.flush();

}


(2) 입력 받아서 콘솔창에 출력

String str;

while(!(str=br.readLine()).isEmpty()){

System.out.println(str);

}


(3) 파일 쓰기

byte buf[] = new byte[10000];

int data = 0;

while ((data = is.read(buf)) != -1) {

fos.write(buf, 0, data);

}



3. 닫기 (3.1 I/O닫기 , 3.2 Socket닫기

if (fos != null)

fos.close();

if (is != null)

is.close();

if (socket != null)

socket.close();


다시 정리하면 

※ 서버(Server)

1) 서버소켓(Server Socket) 생성                      = new ServerSocket(portNumber);

2) 클라이언트 연결 기다린다. I/O blocking socket      = serverSocket.accept();

3) 소켓(Socket)을 이용하여 I/O작업을 한다.

   - Input/Output Stream 조회

   - Filter Stream 추가

   - 입력||출력 작업

4) 연결닫기 I/O close, Socket close


※ 클라리언트(Client) 단

1) Socket 생성 <- ip, port번호  (서버와 달리 소켓 바로 생성)  = new Socket("IP주소",portNo);

2) Socket을 이용해 I/O작업                                

   - Input/Output Stream 조회

   - Filter Stream 추가

   - 입력||출력 작업

3) 연결 끊기 I/O close, Socket close



반응형