2021-09-15

0915 java Socket , java7

 28장 다른 서버로 데이터를 보내려면 어떻게 하면 되나요?

#네트워크 프로그래밍

 - 어플리케이션 레이어의 HTTP, 텔넷, FTP통신등- 전부 TCP통신 위에서 이루어진다. 자바의 경우 소켓을 이용하여 tcp통신을 구현할 수 있다. 

#서버- 클라이언트간 소켓통신

- 서버: SocketServer 객체 생성하여 포트를 연다.

클라이언트로부터 데이터를 받을 Socket객체 열고 accept()하여 데이터를 받을 준비를 한다. 

socket객체로부터 인풋스트림열어서 while(true)걸어주면서 계속 데이터 받는다.

데이터가 더이상 없으면 close한다.


- 클라이언트: 데이터를 보낼 Socket객체를 생성하고, 호스트ip와 포트번호를 생성자에 넣어서 생성한다. TCP/IP통신에서는 포트번호/호스트주소/프로세스id로 식별하기 때문이다.

socket객체로부터 아웃풋스트림 열어서 데이터 전송한다.

전송이 완료되면 close를 때려준다.


#UDP통신

- TCP통신과 다르게 데이터를 그냥 통으로 보낸다. 쪼개서 보내지 않는다. 그래서 Datagram이라는 객체를 이용한다. 버퍼의 사이즈/ 데이터의 length를 지정한다. 데이터를 그냥뭉텅이로 통으로 보내기 때문에 - 버퍼의 사이즈 >= 데이터 length여야한다. 

비연결성 비신뢰성이기 때문에 데이터가 잘 안보내져도 책임지지 않는다. 설령 server쪽에서 포트를 안열고 있다고 하더라도 오류가 발생하지 않는다. 검사하지 않기 때문이다. 

일반적으로 UDP를 사용해서 프로그래밍하게 될 일은 별로 없다고 한다. (쓰더라도 tcp랑 섞어쓰게 될듯)


30장 java7에서 달라진 것들에는?

# 숫자표현

- 0을 앞에 붙이면 8진수, 0x를 앞에 붙이면 16진수, 0b를 앞에 붙이면 2진수

- _를 이용해서 큰 숫자 표현가능

# switch-case문에 String 사용가능

# 제네릭과 다이아몬드

- 타입체크에 유의한다

- 배열의 경우 컴파일시 타입이 남고 / 제네릭의 경우 컴파일시 타입이 남지않음

- 제네릭의 타입은 컴파일시 소거되고, Object타입으로 변환됨

#  예외처리

-try -catch-resouces문 이용하여 Closable이용한 객체의 경우 명시적으로 close()부르지 않아도 깔끔하게 자원반납가능

- |를 이용하여 다수의 예외를 한꺼번에 처리가능 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...