' IOT 기반 응용 SW과정 > Group Studying' 카테고리의 다른 글

2-2. 쿠키와 세션  (0) 2016.06.17
2-1. JSP 내장객체  (0) 2016.06.17
6. 컬렉션 프레임워크  (0) 2016.06.17
5. 쓰레드  (0) 2016.06.17
은행 관리 프로그램  (0) 2016.06.14

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

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) : 프로젝트 협업 관리 도구

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

Day23 TCP  (0) 2016.04.18
Day22 TCP  (0) 2016.04.12
Day20 입출력  (0) 2016.04.08
Day19 스레드  (0) 2016.04.07
Day18 예외처리  (0) 2016.04.06

+ Recent posts