입출력 관련 클래스
문자단위의 입출력
- 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() 함수
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 |
댓글