TcpClient GetStream().CanRead

|
.Net 에서 TcpClient를 사용할 때,
TcpClient.GetStream().Read(.... );
는 참 유용하다...

그리고 기본적으로 Read() 는 Synchronized Call 이다.
(비동기는 BeginRead() )
그런데 이 때 주의할 점 하나는
if (TcpClient.GetStream().CanRead)
{
     // ... 읽기
}
로 해줘야 한다는 것이다.
저렇게 하지 않으면, 패킷이 도착하기 전에도 스트림을 읽어서
에러가 발생할 수 있다.
아마도 여러 군데에서 하나의 패킷을 읽거나...
하는 것을 예상하여 저렇게 설계하지 않았을까 싶다.

CanRead를 체크하고 호출해야 한다.
아까운 내 ... 1시간 쩝...
저작자 표시
Trackback 0 And Comment 0
prev | 1 | 2 | 3 | 4 | 5 ... | 53 | next