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()부르지 않아도 깔끔하게 자원반납가능
- |를 이용하여 다수의 예외를 한꺼번에 처리가능
댓글 없음:
댓글 쓰기