Network
- Main Frame : terminal 의 입력값 저장, 연산하여 terminal에 다시 전달
- Terminal (dummy) : 저장기능 X, 입출력만 가능
⇒ PC 활성화되면서 (입출력, 저장, 연산 가능) Terminal을 개인 PC로 대체
⇒ 연산을 PC에서도 처리하면서 Main Frame 역할 축소→ Server라는 개념으로, dummy Terminal → Client 개념으로.
IP Port
IP - 외부 ip : 전세계에서 단 한개 (외부통신 가능)
내부 ip : 허브 또는 공유기에서 배정한 ip (외부통신 불가)
Port : 서비스의 종류나 프로토콜(통신규약)에 따라 서로 다른 번호를 배정한다. (정수형)
subnet mask : 하나의 네트워크 망을 논리적으로 여러 개의 망으로 구분하기 위해
gate way : 실제로 데이터가 송수신되는 장치의 주소
IPv4 : ip주소를 16진수 4자리로 표현하는 방법(현재 과포화 상태)
IPv6 : ip주소를 16진수 6자리로 표현하는 방법(현재 진행)
InetAddressFrame.java (JFrame)
- 네트웍은 반드시 예외처리
ServerFrame.java
ClientFrame.java (JFrame)
ServerThread : 데이터를 수신하는 역할
메시지 수신됐다는 사실은 ServerThread가 알고 있음 (readObject)
ServerFrame은 접속 여부만 알고 있음
ServerThread는 메시지 들어오면 재송신하는 역할을 할 것.
list에 담은 frame.clients(=serverThread) 를 하나씩 데려와서 소켓을 가지고 있는 OutputStream으로 송신
ClientThread
데이터 언제 들어올지 모르니까 Thread로 계속 돌게 만들어야함
socket으로 stream 또 만들 수 없어서 오류남
(밑에 oos, ois 지워야됨)
serverFrame에 접속자 리스트 추가
- JList : UI 담당, model : 데이터 담당
- ServerThread에 login command가 들어오면 무조건 아이디를 추가시킨다
클라이언트 프레임에도 접속자 리스트 추가
여기 oos.writeObject 의 oos는 자기 자신과 연결된 client를 가리킴
그럼 나머지 client들은? clients라는 ArrayList
서버가 client에게 메시지 전달
서버가 종료했을때
강퇴
to[ ] 배열에 귓속말 선택한 유저들의 위치값을 넣는 작업
[서버 시작시]
- 서버 시작 버튼 비활성화
- 서버 종료 버튼 활성화
[서버 종료시]
- 서버 시작 버튼 활성화
- 서버 종료 버튼 비활성화
[접속시]
- 접속 버튼 비활성화
- 종료 버튼 활성화
[종료시]
- 접속 버튼 비활성화
- 종료 버튼 비활성화
'JAVA' 카테고리의 다른 글
[이것이 자바다] 18.7.5 스레드 병렬처리 (0) | 2021.03.10 |
---|---|
[이것이 자바다] 18.4 파일 입출력, Java Swing으로 채팅 구현 (0) | 2021.03.10 |
[이것이 자바다] 18 IO 기반 입출력 및 네트워킹 (0) | 2021.03.10 |
[이것이 자바다] 15 컬렉션 프레임워크 - 기타 컬렉션 (0) | 2021.03.10 |
[이것이 자바다] 15 컬렉션 프레임워크 (0) | 2021.03.10 |
Uploaded by Notion2Tistory v1.1.0