2009-03-18 2 views

답변

2

이진 데이터 대신 텍스트를 처리하려면 StreamReader/StreamWriter이 필요합니다.

소켓은 이진 데이터를 자연스럽게 처리하므로 TcpClient이 스트림을 노출합니다. 스트림은 2 진 추상화이므로 읽기/쓰기 메서드는 바이트 배열을 처리합니다. TextReader/TextWriter (여기에서 StreamReader/StreamWriter이 파생 됨)은 텍스트를 처리합니다. 해당 메서드는 문자열 및 문자 배열을 처리합니다.

StreamReader/StreamWriter은 기본적으로 스트림을 래핑하고 텍스트와 이진 데이터 간의 변환 (Encoding 통해)을 수행합니다.

1

당신이 그들을 필요가 없습니다. Tcp 래퍼 클래스가 마음에 들지 않으면 원시 소켓을 사용할 수 있습니다. 살펴보기 System.Net.Sockets.

1

TcpListener는 몇 가지 이유로 스트림을 사용하도록 설계되었습니다.

먼저 API는 BCL에서 다른 중간 수준의 (원시 소켓을 사용하는 것과 비교하여) API와 일치합니다. 예를 들어 File IO를 처리하는 표준 방법은 Streams를 사용하는 것입니다.

둘째, 스트림은 TCP 채널을 읽고 쓰는 데 큰 이점을 제공합니다. 사실, 당신이 아주 간단한 경우에 작업 할 때, 그들은 약간의 삶을 살게되지만 약간은 힘들어집니다. 그러나보다 복잡한 시나리오를 살펴볼 때 모든 것을 훨씬 단순하게 만듭니다.

예를 들어 Tcp API가 스트림을 사용하지 않은 경우 연결을 통해 트래픽을 압축하거나 (GZipStream 등을 통해 작성기 + 리더를 전달하는 것) 훨씬 더 어려울 수 있습니다 유선을 통한 모든 커뮤니케이션을 암호화합니다. 스트림은 미래에 발생할 수있는 상황을 처리하기 위해 알고리즘을 쉽게 확장 할 수있는 많은 기회를 제공합니다.

관련 문제