경북대학교 컴퓨터학부 네트워크 프로그래밍(Network Programming) 실습 과제 저장소입니다. 리눅스 환경에서 C 언어를 사용하여 소켓 프로그래밍(TCP/UDP), 멀티스레딩 서버, I/O 멀티플렉싱 및 응용 프로토콜 구현을 다룹니다.
이 저장소는 과제(Homework), 실습(Practice), 시험(Exam) 디렉토리로 구성되어 있으며, 주요 내용은 다음과 같습니다.
| Directory | Topic | Description | Key Files |
|---|---|---|---|
| hw/hw2 | Basic TCP | 기본적인 TCP Echo Client/Server 구현 | hw2_client.c, hw2_server.c |
| hw/hw3 | TCP Chat/Transfer | TCP 프로토콜을 활용한 데이터 전송 실습 (RFC 793 참조) | hw3_client.c, hw3_server.c |
| hw/hw4 | UDP Socket | 비연결성 지향형 소켓인 UDP를 이용한 통신 구현 | udp_client.c, udp_server.c |
| hw/hw5 | Remote Grep (TCP) | 서버의 파일에서 특정 문자열을 검색하는 rgrep 프로토콜 구현 | rgrep_client.c, rgrep_server.c |
| hw/hw6 | I/O Multiplexing | select 또는 poll을 이용한 다중 클라이언트 처리 서버 |
hw6_server.c |
| hw/hw8 | Application Protocol | 특정 응용 서비스(Land)를 위한 클라이언트/서버 구현 | land_client.c, land_server.c |
| alignment | Data Serialization | 구조체 메모리 정렬(Alignment) 및 네트워크 패킷 직렬화 실습 | align_server.c, cinfo.c |
| practice | Socket Basics | 소켓 생성, 바인딩, 연결 등 기초 실습 코드 | client.c, server.c |
| midterm_exam | Midterm Project | 단계별 서버/클라이언트 기능 확장 (v1 ~ v6) 및 프로토콜 테스트 | server6.c, client6.c |
| actual_exam | Final Implementation | 실제 시험에서 수행한 네트워크 애플리케이션 구현 (rgrep 심화 등) | regep_client.c, rgrep_server.c |
- OS: Linux (Ubuntu/CentOS)
- Language: C
- Compiler: GCC
- Tools: Wireshark, Netcat(nc), Telnet
각 디렉토리로 이동하여 gcc를 통해 컴파일 후 실행합니다. 서버를 먼저 실행하고, 다른 터미널에서 클라이언트를 실행하여 접속합니다.
# 1. 서버 컴파일 및 실행 (포트 번호 지정)
cd hw/hw2
gcc -o server hw2_server.c
./server 9000
# 2. 클라이언트 컴파일 및 실행 (IP 및 포트 지정)
# (새로운 터미널에서)
gcc -o client hw2_client.c
./client 127.0.0.1 9000