본문 바로가기

JAVA

[이것이 자바다] 18. 6 네트워크 기초, Java Swing으로 채팅 구현 (2)

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

textPane contentType : plain→html 변경

 

콤보박스에 아이템 넣기

 

 

ClientFrame.java (JFrame)

 

 

 

 

 

ServerThread : 데이터를 수신하는 역할

 

 

메시지 수신됐다는 사실은 ServerThread가 알고 있음 (readObject)

ServerFrame은 접속 여부만 알고 있음

ServerThread는 메시지 들어오면 재송신하는 역할을 할 것.

 

list에 담은 frame.clients(=serverThread) 를 하나씩 데려와서 소켓을 가지고 있는 OutputStream으로 송신

 


 

ClientThread

데이터 언제 들어올지 모르니까 Thread로 계속 돌게 만들어야함

 

 

socket으로 stream 또 만들 수 없어서 오류남

(밑에 oos, ois 지워야됨)

 

 

스레드 시점이 명확하지 않아서 삭제

 

 

 

serverFrame에 접속자 리스트 추가

model 추가

 

JList 생성될때 setModel하고 필드에 있었던 model : 데이터관리 위임
  • JList : UI 담당, model : 데이터 담당

 

마지막으로 ServerThread Command
  • ServerThread에 login command가 들어오면 무조건 아이디를 추가시킨다

 

클라이언트 프레임에도 접속자 리스트 추가

 

 

 

 

여기 oos.writeObject 의 oos는 자기 자신과 연결된 client를 가리킴

그럼 나머지 client들은? clients라는 ArrayList

 

 

자기자신의 아이디 모델에 추가하는 부분으로 옮기기

 

서버가 client에게 메시지 전달

 

 

서버가 종료했을때

 

 

윈도우가 닫힐때 event handler

 

강퇴

 

 

ServerThread

to[ ] 배열에 귓속말 선택한 유저들의 위치값을 넣는 작업

 

[서버 시작시]

  • 서버 시작 버튼 비활성화
  • 서버 종료 버튼 활성화

 

[서버 종료시]

  • 서버 시작 버튼 활성화
  • 서버 종료 버튼 비활성화

 

[접속시]

  • 접속 버튼 비활성화
  • 종료 버튼 활성화

 

[종료시]

  • 접속 버튼 비활성화
  • 종료 버튼 비활성화

 

 

Notion2Tistory

 

boltlessengineer.github.io

이것이 자바다 (신용권의 Java 프로그래밍 정복)

 

이것이 자바다

『이것이 자바다』은 15년 이상 자바 언어를 교육해온 자바 전문강사의 노하우를 아낌 없이 담아낸 자바 입문서이다. 자바 입문자를 배려한 친절한 설명과 배려로 1장에 풀인원 설치 방법을 제

book.naver.com