C# 윈폼을 이용해서 1대N 채팅 서버 및 클라이언트를 만들겁니다.
대략적인 골격은 위 그림처럼 되겠습니다.
윈폼 클래스에 이것저것 다 때려박아봤습니다...
보시기에 지저분할 수도 있을거같네요.
실행 과정을 말씀드리자면
<서버>
1. 윈폼에서 /open [ServerIP] 명령어를 TextBox에 입력 후 Enter 버튼을 누르면 새 쓰레드를 만들어 서버를 엽니다. 포트는 적당히 설정해주시면 됩니다.
2. 서버는 while(true) { .... AcceptTcpClient(); ... } 를 통해 클라이언트를 계속 받습니다.
3. 클라이언트를 받을 때 마다 해당 클라이언트와 통신할 ChatServer 인스턴스를 만듭니다. 이 인스턴스는 생성시 서버로부터 TcpClient 데이터를 받고 Listen() { while(true} { ... read(); ... } } 를 통해 실시간 클라이언트로부터 데이터를 읽습니다.
<클라이언트>
1. ID를 입력하면 Client 폼을 띄웁니다.
2. /connect [ClientIP] [ServerIP] [ServerPort] 를 입력해 서버와 연결합니다. (Client 쪽 포트는 OS에서 알아서 처리하게끔 합니다)
3. 클라이언트가 메세지 입력 후 전송버튼을 누르면 NetworkStream.write(); 메소드로 서버측에 메세지를 전송합니다.
4. 백그라운드로 Receiver() 메소드를 담당할 쓰레드를 만들어 서버쪽에서 오는 메세지를 받습니다.
주요 기능만 구현하고 부가적인 기능(예를 들자면 서버에 연결 안된채로 클라이언트 폼을 닫을때 처리라거나..여러 예외처리들)은 생략했습니다. 이것들은 다음 글에 천천히 쓰겠습니다 허허
'C# > WinForm' 카테고리의 다른 글
C# TCP - 1:N 윈폼 채팅 서버/클라이언트 - 3. 실행 화면 (4) | 2020.03.27 |
---|---|
C# TCP - 1:N 윈폼 채팅 서버/클라이언트 - 2. 클라이언트 (2) | 2020.03.27 |
C# TCP - 1:N 윈폼 채팅 서버/클라이언트 - 1. 서버 (0) | 2020.03.27 |