본문 바로가기

TCPClient

[C# 서버에서 AS3 클라이언트 비정상 종료 체크하기] TcpServer 에서 얻어온 client = server.AcceptTcpClient(); 그리고 client.Client.Connected 라는 속성이 있는데 , 이것은 swf 가 종료 되었을때 체크가 불가능 하다. 그래서 예전에는 [한번 연결 , 한번 송수신 , 바로 종료] 의 매커니즘으로 안전적인 연결을 보장했다. 참고 (http://www.scripter.co.kr/entry/TCPSocket-안전한-Socket-연결과-버퍼데이터를-설정한-데이터전송-C-As3) 하지만 계속 연결을 보장해야 하는경우도 있지 않을까... 역시나 문제는 연결이 지속가능한지를 체크하여 소켓 루프를 사용가능한 상태로 만들어야 하는데 방법이 마땅치 않았다. 구지 방법을 찾자면 서로가 지속적으로 소켓을 통해 [서버 : 잘있.. 더보기
[c# TCP socket] Clinet가 죽은것을 알아채기 TcpClient 클래스 속성중 Connected 라는 속성이 있다. 말그대로 클라이언트가 살았는지 죽었는지 판단하는 속성인데 서버에서 잘 작동하지 않는다. ( 나만 잘 모르는 것일수도 있다.) 그리고 통상적으로 while 루프 안에 스트림을 읽어 오는 코드를 작성한다음 클라이언트 프로그램이 종료 되는경우를 TcpClient 클래스 속성중 Connected 를 이용하면 무한 루프에 빠진다. 해결책은 클라이언트로 오는 바이트 수가 "0" 인것을 확인하여 처리를 해주면 된다. while(true) { /***중요***/ reciveByte = new byte[1024]; data = reader.ReadLine(); if(data == null) { Invoke(mrg , "클라이언트가 죽었습니다"); Ac.. 더보기