[TIL] 220317

effiRin·2022년 3월 18일
0

TIL

목록 보기
1/2
post-thumbnail

오늘 배운 것

[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.inputStreamjava.io.outputStream
2byte(char) 단위 처리java.io.Readerjava.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



profile
모종삽에서 포크레인까지

0개의 댓글