' 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 |
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을 얻어서 읽고 쓰기 수행
(클라이언트
클라이언트는 서버와 연결이 되면
소켓으로부터 인풋,아웃풋 만들어서 버퍼드리더롸이터로 가공해서 리더로부터
들어오는 값을 읽어서 모니터출력
롸이터를 통해 그래 안녕 서버야 라고 출력 )
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): 사용자들에게 서비스를 제공하는 컴퓨터
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();
}
}
}
SVN(subversion) : 프로젝트 협업 관리 도구
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 |