목표
30000명이 동시에 접속할 수 있는 TCP 서버 만들기
30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다.
30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목표한다.
목표를 성취한 후에는 평균 응답 시간을 줄여보도록 하겠다.
프로젝트 Git Hub Repository 링크
https://github.com/MatorMirne/SocketCommunicate-TCP
이전 포스트

두 개의 클라이언트 연결하기
일단 지금의 서버는 연결을 하나만 받습니다.
클라이언트 두 개를 연결하기 위해 클라이언트 연결을 허용하는 Accept 메서드를 반복문 안에 넣었습니다.
클라이언트의 접속 종료 감지하기
클라이언트에서는 문제 없이 종료가 되는데, 서버의 Receive 함수에서 자꾸 무언가가 입력되는 현상이 일어났습니다.
디버깅해 보니, 클라이언트에서 socket.Shutdown 함수를 실행시키면 서버에 "" 값이 계속해서 입력이 되는 현상이 있었습니다.
이 현상은 왜 발생하는걸까요?
들려 오는 데이터가 “” 이면 소켓을 해제하도록 조치했습니다. 이게 옳은 방식일까요? 잘 모르겠습니다.
입력을 통해 프로그램을 종료하도록 스레드 구분하기
현재 코드는 메인 스레드 하나만 동기적으로 작동하고 있기 때문에 일단 코드가 실행되면, 다음 작업을 하기 전까지는 아무 일도 할 수 없습니다. 따라서 저는 서버 작동 중 입력을 통해 기능을 추가했습니다. 추가된 스레드로는, 계속해서 Accept() 메서드를 호출, 대기하며 클라이언트의 접속을 대기하는 클라이언트 접속 스레드, 각 클라이언트에 1대1로 할당되어 클라이언트와의 작업을 수행하는 스레드풀이 있습니다.

하지만 여전히 서버를 안전하게 종료할 수는 없습니다.

>> 다음 일지 : 2023.06.28 - [일지/C#] - [프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기
[프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기
목표 30000명이 동시에 접속할 수 있는 TCP 서버 만들기 30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다. 30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목
develop-jen.tistory.com
'Side Project > 안양시장 프로젝트 - TCP 서버개발' 카테고리의 다른 글
[프로젝트 김필여 - 6일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.07.24 |
---|---|
[프로젝트 김필여 - 5일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.07.05 |
[프로젝트 김필여 - 4일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.06.29 |
[프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.06.28 |
[프로젝트 예수 - 1일차] 대규모 동시접속 TCP C# 서버 (0) | 2023.06.26 |
목표
30000명이 동시에 접속할 수 있는 TCP 서버 만들기
30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다.
30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목표한다.
목표를 성취한 후에는 평균 응답 시간을 줄여보도록 하겠다.
프로젝트 Git Hub Repository 링크
https://github.com/MatorMirne/SocketCommunicate-TCP
이전 포스트

두 개의 클라이언트 연결하기
일단 지금의 서버는 연결을 하나만 받습니다.
클라이언트 두 개를 연결하기 위해 클라이언트 연결을 허용하는 Accept 메서드를 반복문 안에 넣었습니다.
클라이언트의 접속 종료 감지하기
클라이언트에서는 문제 없이 종료가 되는데, 서버의 Receive 함수에서 자꾸 무언가가 입력되는 현상이 일어났습니다.
디버깅해 보니, 클라이언트에서 socket.Shutdown 함수를 실행시키면 서버에 "" 값이 계속해서 입력이 되는 현상이 있었습니다.
이 현상은 왜 발생하는걸까요?
들려 오는 데이터가 “” 이면 소켓을 해제하도록 조치했습니다. 이게 옳은 방식일까요? 잘 모르겠습니다.
입력을 통해 프로그램을 종료하도록 스레드 구분하기
현재 코드는 메인 스레드 하나만 동기적으로 작동하고 있기 때문에 일단 코드가 실행되면, 다음 작업을 하기 전까지는 아무 일도 할 수 없습니다. 따라서 저는 서버 작동 중 입력을 통해 기능을 추가했습니다. 추가된 스레드로는, 계속해서 Accept() 메서드를 호출, 대기하며 클라이언트의 접속을 대기하는 클라이언트 접속 스레드, 각 클라이언트에 1대1로 할당되어 클라이언트와의 작업을 수행하는 스레드풀이 있습니다.

하지만 여전히 서버를 안전하게 종료할 수는 없습니다.

>> 다음 일지 : 2023.06.28 - [일지/C#] - [프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기
[프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기
목표 30000명이 동시에 접속할 수 있는 TCP 서버 만들기 30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다. 30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목
develop-jen.tistory.com
'Side Project > 안양시장 프로젝트 - TCP 서버개발' 카테고리의 다른 글
[프로젝트 김필여 - 6일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.07.24 |
---|---|
[프로젝트 김필여 - 5일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.07.05 |
[프로젝트 김필여 - 4일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.06.29 |
[프로젝트 김필여 - 3일차] 대규모 동시접속 TCP C# 서버 제작기 (0) | 2023.06.28 |
[프로젝트 예수 - 1일차] 대규모 동시접속 TCP C# 서버 (0) | 2023.06.26 |