Project History/다중 기능을 포함한 채팅 프로그램6 [C# 채팅 프로그램 #05] 채팅 프로그램 프로젝트 최종 시연 영상 및 설명 서론 아마 채팅 프로그램 카테고리의 마지막 글이 되지 않을까 싶다. 앞서 학습할 기능들에 대한 정리는 충분히 한 것 같고 이번 글에서는 프로그램에 어떤 기능들이 들어가있고 실제로 어떻게 동작하는지에 영상으로 정리해보겠다. 프로그램 사용 기능 ==.Net Windows Forms 이용 == 1. TCP/IP 통신을 활용한 서버 / 클라이언트 구현 2. SocketAsyncEventArgs를 활용한 비동기 통신 기능 3. 특정 클라이언트에게만 송신 하는법 4. Json을 이용한 메세지 송 수신 기능 5. 송 수신 패킷 암호화&복호화(AES-256) 기능 --> 위의 기능들이 모두 이뤄진 프로그램이며 아래에서 동작 시연으로 마무리하겠다 ! ***** 프로그램 동작 영상 ***** 프로그램 동작 시나리오 1. .. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 24. [C# 채팅 프로그램 #04] AES-256 암호화를 이용하여 JSON 메세지 송 수신 기능 구현 서론 이번 글이 채팅 프로그램 프로젝트 기능 정리의 마지막 글이 될 것같다. (이 후 추가 기능으로 있을 지 모르겠지만) 이번 글에서의 중점 포인트는 제목에 써놓았듯 AES암 복호화를 이용하여 호스트와 클라이언트간의 채팅 송 수신하는 방법이다. 나는 AES-256 암호화로 암 복호화 작업을 진행하였다. 우선 설명하기 앞서 AES의 개념에 대해 어느정도 짚고 넘어가야 하는데, 해당 내용은 이전 글을 한번 읽어보면 아래 소스를 이해하는데 크게 어려움이 없을 것이라 생각한다. 사용한 AES 256의 KEY와 IV KEY : "1234567890123456" -> 이후 byte[]로 Convert 진행 IV : new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 23. [C# 채팅 프로그램 #03] TCP/IP통신에서 특정 클라이언트에게만 메세지 보내기 보통 패킷을 주고받는 tcp/ip 통신서버에서 현재 연결되어있는 여러 소켓중 특정 클라이언트 소켓에만 보내는 방법에 대해 여러 가지 고민을 해봤다. 해당 기능을 구현할 때 까지의 흐름은 이랬다 연결하는 소켓의 핸들러id를 배열에 담아두었다가 사용하면 되지않을까? 근데 그럴려면 다중 소켓이 순서 상관없이 마구 접속해있다는 가정하에 원하는 클라이언트를 어떻게 찾을 수 있을까?? 이러한 문제에 또 봉착했다. 근데 생각해보니 그냥 처음 클라이언트가 접속할때 고유ID를 받아놓고 컬렉션에 고유ID와 해당 소켓을 담아두고 특정 장비에게 보낼 때 컬렉션에서 선택한 아이디를 찾아 해당 소켓을 Send하면 되지 않을까?라는 생각에 아 이거다 하고 바로 진행하였다. 진행 후에 다른 사람들은 어떻게 할지 찾아본 결과 비슷하게.. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 10. [C# 채팅 프로그램 #02] IOCP - EAP 패턴을 이용한 비동기 TCP/IP 클라이언트 구현 (SocketAsyncEventArgs) 이전 글에서 서버를 구현하는 것을 알아 보았고 이번 글에서는 클라이언트에 대해 알아 볼 것이다. 클라이언트에서도 서버와 동일하게 SocketAsyncEventArgs 클래스를 사용했으며 구현 소스를 통해 알아보자. 1. 서버 연결 client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client.Connect(IPAddress.Parse(tb_server_ip.Text), int.Parse(tb_server_port.Text)); JObject data = new JObject(); data.Add("type", "init"); data.Add("text", tb_userid.Text); // json -.. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 10. [C# 채팅 프로그램 #01] IOCP - EAP 패턴을 이용한 비동기 TCP/IP 서버 구현 (SocketAsyncEventArgs) 이번글에서는 비동기 소켓 이벤트인 SocketAsyncEventArgs를 활용하여 서버를 구현을 해보려한다. SocketAsyncEventArgs는 보통 유니티 게임 서버 개발을 할때 사용하는 경우가 있다고 하며, 나도 사실 이번 프로젝트 진행하면서 처음 사용해본 클래스이다. 이 클래스는 닷넷 비동기 소켓에서 사용하는 개념으로 비동기 소켓 메서드를 호출할 때 마다 반드시 필요한 객체이다. 닷넷 3.5 이전 버전에서는 Begin과 End계열의 API를 사용했지만 닷넷 3.5이상 버전부터는 해당 클래스의 API를 사용하여 소켓 프로그래밍을 구현할 수 있다고 한다. 나도 여지껏 사용해왔던 Begin ~ End 계열의 API를 사용할 경우 IAsyncResult라는 객체를 사용했지만 해당 이벤트 클래스를 이용하.. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 10. [C# 채팅 프로그램 #00] 작업 환경 / 기능 구현 리스트 / UI 제작 서론 앞으로 어플리케이션 일을 하면서 TCP/IP 연동은 기본적으로 알아야할 소양이라 생각이 들어 그간 많이 사용해보지 못한 기능들을 사이드 프로젝트를 통해 적립시켜놓을려고 한다. 기본적인 채팅 기능만을 가진 프로그램을 만드는것은 크게 어렵지 않지만 이번 프로젝트를 통해 중요 포인트로 보고있는것은 특정 클라이언트에게 보내는 방법과 패킷 암복호화 작업이다. 사실 이정도만 할줄알면 기본적인 어느 tcp/ip를 통한 연동 프로그램을 만드는데 크게 문제가 없을 것이라고 생각든다. 이번 기회에 나만의 tcp/ip 통신 기술 스택을 쌓아보자. 프로젝트 진행 환경 Tool : VisualStudio 2019 작업 : Windows Form 환경 : .Net Framework 4.8 프로젝트 기능 구현 예정 1. TC.. Project History/다중 기능을 포함한 채팅 프로그램 2022. 2. 10. 이전 1 다음 💲 많이 본 글