본문 바로가기

개인 작업11

07. 서버 작업 근황2 암호화 복호화에 Aes를 추가했다. 그 외 패킷을 보낼 때, 어떤 식으로 패킷에 대해 보안을 강화할지 결정해서 구현했다. 서버에 패킷이 들어오면 이제 알아서 정해준 클래스를 호출해줄 것이다. ServerManager가 ProcessManager를 호출하고 ProcessManager는 미리 PacketList를 정의해놔서 원하는 작업을 할 것이다. 물론 다른 언어와도 Json 형식만 맞춰준다면 호환 가능할 것이다. 예전에는 Send Packet도 인터페이스로 구현했지만 그렇게 할 필요가 있을까? 해서 미리 상속을 해봤다. 이건 어떤 장단점이 있을지는.. 음 PacketId와 ConnectionType은 열거형에 데이터를 따른다. C#의 열거형이랑 다른 언어의 열거형이 다를 수 있기에 int로 구현해놨다. .. 2019. 10. 2.
06. 클라이언트 작업 근황1 클라이언트와 서버 접속에 관련하여 클라이언트를 먼저 완성하고 추후에 서버를 작업했음에도 서버에 관련된 글을 먼저 작성했다. 뭐.. 클라이언트는 아직 더 고민해야 하는 내용이 많다. 클라이언트 기본 라이브러리에 설정 파일 및 서버와 통신하는 라이브러리를 만들었다. 그리고 서버와 공통 라이브러리도 참조해줬고 -..- 아 가장 큰 문제는 난 mvvm 패턴을 잘 모른다. C# 버전 언제적이었는지.. INotifyPropertyChanged 처음 나왔을 때 보긴 했는데 이 방법을 채택했더라. 아 이거 코드 MS에 있는 코드다. 양형이 기본 형식이라고 해서 올려놨는데.. -..- 왠만한 한국에 있는 사이트보다 어렵다. 원본은 잘 만들어놨다.. 가져다 쓰는 내가 허접한거겠지. ㅠ.ㅠ 아 WPF에서 어떤 형식으로 구성.. 2019. 10. 1.
05. 서버 작업 근황1 Watson 라이브러리를 사용하여 서버 라이브러리를 만들었다. 물론 같은 프로젝트에 구성하면 종속성이 너무 강해져서 대리자를 통해 서버 프로젝트에 ServerManager로 모든 행동을 한다. 유저들이 접속하고 아무 행동을 하지 않을 때, 강제적으로 시간을 측정해 재접속을 유도하도록 구성하기로 했다. 기초적으로 돌아갈 코드.. 어떻게 변경될지는 아직 더 생각해야 한다. -..- 클라이언트와 함께 쓰는 라이브러리도 만들었다. 간략하게 패킷이랑.. 압축.. 암호화.. 이제 Json을 보낼때 어떤 형식으로 할지 고민을 더 해야 한다. Class -> Json -> 압축 -> 암호화 -> Send가 될지? 아니면 순서가 바뀔지? 정해진 건 없다. 아마 보안에 더 신경을 쓴다면 암호화에 몇 가지 더 기법이 들어가.. 2019. 10. 1.
04. WebSocket 및 서버 관련 정리 다수의 클라이언트가 서버에 붙어서 대기 상태로 변경 시 데이터를 받아야 한다. 가령 3천명의 유저가 있으면 1명의 유저가 자기 그룹 29명에게 데이터를 보내야 한다. 그래서 찾아본 결과 브로드캐스트 기술도 있지만 이건 뭐... 배보다 배꼽이 더 크다. 결론은 클라이언트에 환경 설정과 공유기 설정에 따라 무시될수도 있기에 기술적인 측면만 개인적으로 알아봤다. 그리고 더 찾아보니, i7 1세대로 통신이 많지 않으면 8천명도 수용이 가능하다고 하더라.. 그런데 내가 만드려고 하는건 게임 서버도 아니고 1만명 이상도 가능하지 않을까 싶다. 물론 서버 스팩에 따라.. 그래서 이 틀간 고민한 내용 중 기술적인 측면은 끝이 났고 WebSocket 중 어떤걸 쓸까 고민해야 했다. 남들이 만들어 놓은 SuperSokce.. 2019. 9. 26.