[네트워크] TCP 소켓 프로그래밍: read() 함수와 연결 종료 감지의 이해
·
컴퓨터/CS
러스트로 TCP 소켓 프로그래밍에서 리스닝 소켓을 통해 커넥션 소켓을 할당하고 바이트를 읽어드릴 때, 종종 다음과 같은 코드 패턴을 볼 수 있습니다.match connection_socket.read(&mut receive_buffer) { Ok(0) => { // 0바이트 수신은 클라이언트가 연결을 닫았음을 의미 println!("Client {} disconnected.", client_addr); break; // 내부 루프 종료 -> 다음 연결 기다림 } // 다른 케이스 처리...}  이 코드에서 read() 메서드가 -1을 반환할 때 "클라이언트가 연결을 닫았다"고 처리하는 부분을 봤을 때, 처음에 다음과 같은 의문이 들었습니다."그런데 클..
[네트워크] TCP와 UDP 소켓 프로그래밍의 근본적인 차이: 실제 에러를 통해 이해하기
·
컴퓨터/CS
들어가며Rust 소켓 프로그래밍을 진행하면서 TCP와 UDP의 차이점에 대해 이론적으로만 알고 있었던 것을 실제 코드 구현과 에러 메시지를 통해 생생하게 경험하게 되었습니다.특히 다음과 같은 TCP 클라이언트 에러 메시지는 두 프로토콜의 본질적인 차이를 확인할 수 있었습니다. UDP 클라이언트와 서버, TCP 클라이언트와 서버 각각을 rust로 프로그래밍 하는 것이 과제였는데, UDP 클라이언트는 서버가 실행 중이지 않아도 문제 없이 실행 됐었는데 TCP 클라이언트는 서버가 실행 중이지 않은 상태에서 실행될 경우 위와 같은 에러 메시지를 발생시켰습니다.이 에러를 통해 TCP와 UDP의 근본적인 차이점과 각 프로토콜이 실제 애플리케이션에 미치는 영향에 대해 생각해보게 되었습니다.TCP vs UDP: 연결..