간단한 C# .NET HTTP 서버 구현
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
C# 네트워크 프로그래밍 초보자, 웹 서버 구현에 관심 있는 개발자
핵심 요약
TcpListener
클래스를 활용해 TCP 통신을 처리하며,AcceptTcpClient()
메서드로 클라이언트 연결 수락- HTTP 요청 파싱 후
HTTP/1.1 200 OK
응답을 비동기 방식으로 전송 index.html
파일을 서버에서 정적 리소스로 제공하는 방식StreamReader
와StreamWriter
를 통해 요청/응답 흐름 관리
섹션별 세부 요약
1. 서버 초기 설정
TcpListener
인스턴스 생성:IPAddress.Loopback
주소와9999
포트 사용tcpListener.Start()
로 서버 시작, 무한 루프로 클라이언트 연결 대기using
문으로 리소스 관리 및 예외 처리 강화
2. 클라이언트 요청 처리
handler.GetStream()
을 통해 TCP 커넥션 스트림 얻기StreamReader
로 HTTP 요청 헤더 파싱 (예:GET / HTTP/1.1
)string.IsNullOrWhiteSpace(line)
조건으로 요청 라인 분리 및 종료 판단
3. 응답 생성 및 정적 파일 제공
HTTP/1.1 200 OK
응답 문자열 생성 및 UTF-8 인코딩- 프로젝트 경로 추적을 위해
DirectoryInfo
와Path.Combine()
사용 File.ReadAllText()
로index.html
내용 읽고,stream.WriteAsync()
로 클라이언트에 전송
결론
index.html
파일이 프로젝트 폴더에 존재해야 정상 동작- 비동기 메서드(
WriteAsync
) 사용으로 네트워크 I/O 효율성 향상 - 실무에서는 경로 처리, 에러 핸들링, 멀티스레드 지원이 추가되어야 함