C&P : Copy & Paste - 복사 & 붙여넣기

: 널리고 널린 것들을 충분히 활용하고,


D&C : Divide & Conquer - 분할 & 정복

: 나눠서 조금씩 정복해 나가고,


C&I : Creative & Idleness - 창조적 게으름

: 게을러지되 창조적이어라.




import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;


public class TcpServer {

public static void main(String[] args) {

ServerSocket serverSocket = null;

Socket socket = null;

BufferedReader br = null;

BufferedWriter bw = null;

try{

//server는 프로그램이 실행되면 연결요청을 기다림 포트 5001

serverSocket = new ServerSocket(5001);

socket = serverSocket.accept(); //문장형태의 문자열을 주고 받을수 있도록 세팅;

InputStream in = socket.getInputStream();

OutputStream out = socket.getOutputStream();

br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

   bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

   //server는 client가 연결되면 '이름을 입력하세요'라고 메시지를 전송

   bw.write("이름을 입력하세요\n");

   bw.flush(); // server는 client가 보낸 이름을 변수에 저장, 

   String clientName = br.readLine();

   //계속해서 client가 보내는 메시지를 수신,모니터에 출력

   while(true)

   {

    String msg = br.readLine();

    if(msg.equals("quit"))//client가 보낸 메시지가 quit일 경우 프로그램 종료

    break;

    System.out.println(clientName + " : " + msg); 

   }

}catch(IOException e){

e.printStackTrace();

}}}


ctrl  + shift + o -> 클래스 임포트 정리


import java.io.*;

import java.net.*;

public class TcpClient {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.println("연결할 IP주소를 입력하세요");

String ipAddr = scan.nextLine();  //client는 프로그램이 실행되면 사용자로부터 ip주소를 입력받아

Socket socket = null; 

BufferedReader br = null;

BufferedWriter bw = null;

try{ //해당 주소의 5001포트로 tcp 연결 요청을 보냄

socket = new Socket(InetAddress.getByName(ipAddr),5001);

//문장형태의 문자열을 주고 받을 수 있도록 세팅

InputStream in = socket.getInputStream();

OutputStream out = socket.getOutputStream();

br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

   bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        //client는 연결이 성공하면 서버가 보낸 메시지를 모니터에 출력

System.out.println(br.readLine());

//그 다음부터 사용자로부터 계속해서 메시지를 입력받아서 받을때마다 서버에게 전달

while(true){

String msg = scan.nextLine();

bw.write(msg+ "\n";

bw.flush();

}

}catch(UnknownHostException e){

e.printStackTrace();

}catch(IOException e){

e.printStackTrace();

}}}


TCP 통신하기


서버

1. 포트번호를 적어서 ServerSocket 객체 생성

2. ServerSocket 객체의 accept()메소드 호출

3. 클라이언트로부터 연결요청이 들어오면 2의 결과로 socket객체가 반환됨

4. socket 객체로부터 inputStream과 outputStream을 얻어서 읽고 쓰기 수행

(서버소켓만들어서 어셉트 대기하다가

소켓객체 만들어지면

인풋스트림 아웃풋스트림을 각각 

버퍼드리더 버퍼드 롸이터로 가공해서

롸이터에 안녕 클라이언트야? 라고 출력 한 후에

리더로 들어오는 메시지를 기다리다가 읽히면 모니터에 출력 )


클라이언트

1. 서버와 아이피와 포트정보를 이용해 Socket 객체 생성

2. 1이 성공하면 Socket 객체로부터 inputStream과 outputStream을 얻어서 읽고 쓰기 수행

(클라이언트

클라이언트는 서버와 연결이 되면

소켓으로부터 인풋,아웃풋 만들어서 버퍼드리더롸이터로 가공해서 리더로부터

들어오는 값을 읽어서 모니터출력

롸이터를 통해 그래 안녕 서버야 라고 출력 )


' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day24 GUI 그래픽 사용자 인터페이스 // 이벤트 처리  (0) 2016.04.19
Day23 TCP  (0) 2016.04.18
Day21 입출력 / 네트워크 프로그래밍  (0) 2016.04.11
Day20 입출력  (0) 2016.04.08
Day19 스레드  (0) 2016.04.07

+ Recent posts