본문 바로가기
개발/교육

(Java)13일차

by kakk789 2022. 4. 13.

입출력 관련 클래스

문자단위의 입출력

  • Reader, Writer

바이트 단위의 입출력

  • InputStream, OutputStream
  • inputStream
    더이상 읽을게 없으면 -1 반환 (EndOfFile)

openStream

  • 문서의 내용을 읽으려면 읽기 위한 스트림을 설정해야함.(openStream 사용)
반환 값: InputStream
		InputStream is = url.openStream();

리스트를 객체단위로 입출력

  • ObjectInputStream, ObjectInputStream
  • 객체 단위로 출력을 하기 위한 클래스는 "직렬화" 되어야 한다.

 

 

 

 

 

 

 

 


InetAddress 클래스

  • InetAddress는 생성자가 제공되지 않음
  • static메소드를 통해 객체를 생성할 수 있음.

getByName 함수(단일 IP 반환)

InetAddress addr = InetAddress.getByName("www.naver.com");

getAllByName 함수(복수 IP 반환)

InetAddress list[] = InetAddress.getAllByName("www.naver.com");

URL

  • 인터넷상의 문서의 위치를 표현 ( www.naver.com/index.html )
URL url = new URL("URL 경로/파일명");

Arrays.fill()

  • fill() -> 배열을 특정 값으로 채워라..
  • 보통 배열의 나머지 부분을 0 (없는 값)으로 많이 채움 (쓰레기 값 제거)
Arrays.fill(배열, 채울 값);

JTextField

  • 한 줄 입력 가능

JTextArea

  • 여러 줄 입력 가능

TCP 방식을 위한 자바 제공 클래스

ServerSocket (포트번호를 필요로함)

string타입변수를 바이트로 변환할 때 getBytes(); 를 붙힐 것
많이 사용하는 함수

ServerSocket 
Socket 
InputStream / OutputStream
InputStream의 read() 함수
OutputStream Write() 함수

read() 함수
ServerSocket 생성자

Server

1. ServerSocket 생성

ServerSocket server = new ServerSocket(9000);

2. 무한 대기 (while)

while(true) {
....
...
}

4. 통신을 수락 (accept 함수, 반환 값 Socket)

Socket socket = server.accept();

5. 데이터를 주고받을 스트림을 생성한다. InputStream / OutputStream

InputStream is = socket.getInputStream();  //받는 용도
OutputStream os = socket.getOutputStream(); //보내는 용도

6. 데이터를 주고받음

os.write(n); // Server To Client 데이터 전송
// ..
// ..
is.read();  // Client에서 데이터 읽기

7. 사용했던 자원을 닫아줍니다.

			is.close();
			os.close();
			client.close();

Client

3. Socket객체를 생성하여 통신을 요청

Socket client = new Socket("IP주소", 9000);

5. 데이터를 주고받을 스트림을 생성한다. InputStream / OutputStream

InputStream is = socket.getInputStream();  //받는 용도
OutputStream os = socket.getOutputStream(); //보내는 용도

6. 데이터를 주고받음

os.write(n); // Server To Client 데이터 전송
// ..
// ..
is.read();  // Client에서 데이터 읽기

7. 사용했던 자원을 닫아줍니다.

is.close();
os.close();
client.close();

2022.04.15 - [비공개] - TCP Server, TCP Client 난수 주고받기 예제

UDP방식을 위한 자바 제공 클래스

2022.04.15 - [분류 전체보기] - UDPSender, UDPReceiver 코드

  • UDP 는 패킷단위로 전송
  • DataSender 쪽과 Receiver 쪽은 구성이 비슷
DatagramPacket : 데이터가 저장되는 곳
DatagramSocket : 데이터를 담아서 보내는 것

즉, 패킷을 소켓에 담아 보냄

socket.receive(packet); - 수신된 데이터는 packet안의 byte배열안에 담겨있음.
socket.send(packet);  - packet안의 데이터들을 socket으로 감싸서 보내버림

DatagramSocket (데이터 전송하는 개념)

Receiver 쪽에서는 사용할 포트를 적음

DatagramSocket Dsocket = new DatagramSocket(9001);

Sender 쪽에서는 보통 기본으로 사용함

DatagramSocket DSocket = new DatagramSocket();

DatagramPacket (데이터전송단위의 개념)

Sender 쪽에서 보통 사용하는 형식

DatagramPacket packet = new DatagramPacket(바이트 타입변수, 변수 길이, 주소, 포트);

Receiver 쪽에서 보통 사용하는 형식

byte []data = new byte[100];
DatagramPacket Dpacket = new DatagramPacket(data, data.length);
반응형

'개발 > 교육' 카테고리의 다른 글

(Java)16일차  (0) 2022.04.18
(Java)15일차  (0) 2022.04.15
(Java)10일차  (0) 2022.04.08
(Java) 9일차  (0) 2022.04.07
(Java) 7일차  (0) 2022.04.05

댓글