본문 바로가기
캠퍼스/Java

59. 소켓통신

by Sylar 2022. 8. 23.

 

이렇게 호출해서 실행되는 간단한 틀을 만들었다.

 

 

serverSocket을 전역으로 관리하기 위해 저기 적음.

다른데 집어넣으면 거기서만 쓸수 있음.

 

 

서버소켓은 try catch로 잡아줘야 함.

 

 

 

ServerSocket(); 뒤에 0 ~ 65535사이의 포트 값을 적을 수 있으나 0 ~ 1023 포트는 well known port라 쓰면 충돌남.

이게 통신을 하기위한 기본이다. 소켓으로 통신하기 때문.

 

자바는 소켓을 시스템 콜로 이용한다 ( os가 들고있는 함수를 빌려 씀 )
os가 들고있는 네이티브 함수를 자바가 빌려서 쓴다.

지금은 소캣을 만들고 포트도 열었지만 리스너가 없다.

 

 

 

accept : while을 돌며 통신요청이 있나 리스닝 하고 있는 애

 

서버 소켓이랑 아래에 만든 소켓이 다른거다

서버 소켓은 클라이언트가 커넥션 요청을 하면 새로운 소켓을 만들어,

그 소켓과 클라이언트와 연결할 스트림을 만들어 주는 역할.


이후에 클라이언트가 스트림을 통해 새로운 소켓과 연결이 되면 서버와 클라이언트의 연결은 끊어짐.

이후 클라이언트는 새로운 소켓과 통신한다

socket은 타겟을 만들어준것

 

읽기 전용 버퍼를 만들었다


readLine으로 버퍼를 읽어낸다.

 

 

클라이언트용 소켓을 하나 만들었다.

자기자신에게 연결할 거니까 로컬호스트라고 잡고 포트는 만으로 설정했으니 만으로 잡았다.

BufferedWriter를 쓰면 메세지를 보낼때 \n을 붙혀야 한다. ( 다 보낸거라고 알려줘야 하는거 )
이후 flush로 보내는거.

 

서버에 정상적으로 들어갔다.

 

 

 

whlie로 msg로 받은 값이 null이 아닐경우 계속 실행되게 만들었고,

 

이후에 bye라고 치면 통신이 종료되는 간단한 프로토콜을 추가했다.

 

 

메세지를 한번 받아도 통신이 지속되고 bye라고 치니까 통신이 종료되었다.

 

 

'캠퍼스 > Java' 카테고리의 다른 글

61. 스레드  (0) 2022.08.23
60.gson  (0) 2022.08.23
58.Try, Catch  (0) 2022.08.23
57.DB와 JAVA 연결하기  (0) 2022.08.19
56.Service  (0) 2022.08.17