신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 이번에는 채팅 서버 구현을 위해 프로토콜을 추가해보도록 하겠습니다. 프로토콜은 두 프로그램(서버, 클라이언트)가 통신하기 위해 약속한 말의 형식입니다. 데이터를 보냈을 때, 받는 측과 보내는 측은 서로 '뭘 하려는 데이터'인지와 '그 작업을 하기 위해 어떤 데이터를 보냈는지'와 기타 보낼 데이터에 대한 약속을 해 두어야 합니다. 프로토콜을 지정함으로써 어떤 데이터를 주고받는지 명확하게 분류할 수 있습니다. 저는 Request 프로토콜과 Response 프로토콜을 따로 만들도록 했습니다. 각 프로토콜을 만들어 상속받고, 프로토콜의 ID 를 열거체로 선언했습니다. public abstract class Protocol..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 머릿말을 끝으로 옮겨봤습니다! 그게 더 깔끔한 것 같네요 이번에는 오류를 없애 보려고 합니다. 클라이언트가 종료되어도 자꾸 스레드풀에 반납이 되지 않는 에러를 해결하기 위해 코드를 추가해 보았습니다. 문제 영상 클라이언트를 종료해도 오브젝트 풀에 반납이 되지 않고 있습니다. 1. 오브젝트 풀에 노드를 돌며 커넥션이 끊어졌는지 확인하는 코드를 추가하고 2. 메인 스레드에서 받는 입력으로 실행하도록 변경했습니다. 그러자 반납이 잘 됩니다. 그런데 이렇게 작동시키니 반복문 실행에 문제가 있네요. 코드를 개선했습니다. 이제 이코드를 주기적으로 실행시키도록 하겠습니다. 매 시간마다 실행시키는 것보다는 새로운 연결을 감지할 ..
프로그램을 비정상 종료하면 에러가 뜰때가 많습니다. 이러한 경우의 에러를 없애는 방법 몇가지에 대해 소개드리겠습니다. 제가 발견한 방법은, 비정상 종료 시 호출되는 이벤트에 콜백 메서드를 추가하는 것이었습니다! 제가 찾은 이벤트는 두 종류입니다! Console.CancleKeyPress 사용 - Stop 버튼을 눌러 프로그램을 종료한 경우 - Ctrl + c 를 눌러 프로그램을 종료한 경우 using System.Diagnostics; using System.Runtime.CompilerServices; using TCPClient; class Program { private static List clients = new List(); public static void Main(string[] args)..
신입 개발자가 작성한 연구일지입니다. 이때 오해하고 있던 잘못된 정보가 포함되어 있습니다. 목표 30000명이 동시에 접속할 수 있는 TCP 서버 만들기 30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다. 30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목표한다. 목표를 성취한 후에는 평균 응답 시간을 줄여보도록 하겠다. 프로젝트 Git Hub Repository 링크 https://github.com/MatorMirne/SocketCommunicate-TCP 이전 포스트 1일차 : 2023.06.26 - [일지/C#] - [프로젝트 예수 - 1일차] 대규모 동시접속 TCP 서버 2일차 : 2023.06.27 - [일지/C#] - [프로젝트 예수 - 2..
그동안 눈앞의 일을 처리하기 바빴는데, 문득 그런 생각이 들었다. 서버를 처음부터 만들기 위해서는 어떻게 해야 하지? 웹 배포는 너무 쉽게 할 수 있는데 TCP 배포는 어떻게 하는거지? 서비스로 띄우는 과정은 어떻게 하는거지? 정보처리기사 시험이 마치면 전체적으로 서버를 개발하기 위해 어떤 것을 해야 하고, 내가 아직 잘 모르는 것이 무엇인지 정해 봐야겠다.
주인의식이 없다는 생각이 든다. 코드에 지대한 영향을 주는 부분을 손볼 때면, 나는 항상 함께 코드를 작업하고 있는 상급자에게 허락을 요구하고, 어느 방향으로 영향을 줄 지 의논드리곤 한다. 그런데, 나는 이 과정이 조금 아쉽다. 장점으로는 숙달된 스승이 어떻게 코드를 변경하는지 볼 수 있다는 것이 있지만, 결국은 중요하고 어려운 부분은 상급자께서 수정하고, 나는 말단의 쉬운 수정만을 하는 역할이라는 생각에 내가 정말 이 팀에 꼭 필요한 사람인지 의문이 든다. 내가 자의로 모든 코드를 수정하는 서버를 운영하는 것이 이래서 중요한 것 같다. 상급자가 코드를 다 고치는 동안 놀고 있지 말고 내 서버 유지보수해야지! 그리고 나중에는 이런 상황에 뚝딱 내가 대응할 수 있는 경험 있고 능력 있는 개발자..