오늘 배운 것
[Java 수업] Socket과 Serversocket
Networking 프로그래밍
- 네트워크를 통해서 데이터를 주고 받는 프로그래밍
- 필요한 지식들
protocol의 개념 → 약속
I/O 프로그래밍
‘Socket’이란 네트워크 연결장치
- (비유) '종이컵 전화기'
- 네트워크상에서 연결 고리의 시작과 끝
- Socket을 통해서 입출력 작업을 하는 InputStream/OutputStream을 얻어낼 수 있다.
- 핵심적인 메소드
getInputStream() -> InputStream 객체 반환
getOutputStream() -> OutputStream 객체 반환
Serversocket이란 존재
- (비유) 가게 문을 열고 준비해야 손님들 방문 가능 + 그리고 손님 오길 기다림 → 이게 ‘서버 소켓’
- 네트워크의 연결을 기다리는 존재라서, '리스너'라고도 함.
- ‘서버’ 측에서 네트워크 연결을 기다린다. (= 서버에만 있다.)
Scanner의 nextLine 통해서 데이터 입력할 때 멈췄다가, 문자열을 입력했음.
이렇게 멈춘 걸 blocked 되었다고 표현함.
기다리고 있다가 소켓 연결이 들어오면 서버소켓에 의해서 새로운 소켓이 만들어지고 두 소켓 간에는 네트워크 연결이 된 것.
- accept() 메소드 이용해서 외부에서 들어오는 연결을 Socket 객체로 사용할 수 있도록 하는 장치
- 내부적으로 계속해서 연결을 기다리는 일종의 리스너(listenr)에 해당하는 장치
정리
(비유) 소켓(고객) - 서버소켓(지배인) - 소켓(점원)
Server 객체 만드는 방법
- Server 측 - ServerSocket에서 연결 대기하다가 accept()을 결과로 만들어지는 Socket 객체
- Client 측 - 직접 ip와 port 정보를 활용해서 Socket 객체를 만들어내는 방식
Socket 연결 이후 작업
- Socket 연결 이후에는 getInputStream() 혹은 getOutStream()을 이용해서 데이터를 읽거나 쓰는 작업을 진행할 수 있다
- 이후의 모든 작업은 기본적인 I/O프로그래밍과 동일하게 작성
- 모든 작업 이후에는 반드시 try ~ catch ~ finally를 이용해서 close()
출처 :
https://jink1982.tistory.com/182
https://www.youtube.com/embed/-IIyaCKQHV4
https://www.youtube.com/embed/8XX95znLgEs
[Github] Markdown Tables Generator
| | | | | |
|---|---|---|---|---|
| | | | | |
| | | | | |
| | | | | |
| | 읽기 전용 | 쓰기 전용
|---|---|---|
|1byte 단위 처리 | java.io.inputStream | java.io.outputStream
|2byte(char) 단위 처리 | java.io.Reader | java.io.Writer
| 읽기 전용 | 쓰기 전용 |
---|
1byte 단위 처리 | java.io.inputStream | java.io.outputStream |
2byte(char) 단위 처리 | java.io.Reader | java.io.Writer |
출처 : https://www.tablesgenerator.com/markdown_tables
[Github] How to make Github sort the repository in numerical order
[Ch.16]
[Ch.2]
-
원인 : lexicographical order(사전식 순서)로 정렬된 거였음.
예) 123, 132, 213, 231, 312 ... // 이게 사전식 순서
-
해결 : 01, 02, 03으로 번호 매기기
출처 : https://stackoverflow.com/questions/51075441/how-to-make-github-sort-the-repository-in-numerical-order