article search result of 'TCP' : 3

  1. 2012.11.27 [Broadcast Video Streaming] (149)
  2. 2012.05.17 [WCF] 분산서버 데모 (77)
  3. 2010.12.04 [c# TCP socket] Clinet가 죽은것을 알아채기 (68)

[Broadcast Video Streaming]

 

 

 

640 * 480 * 4 만큼의 컬러 바이트 배열을 실시간으로 각 SWF 로 전송하여 그 컬러 배열 대로 bitmap을 만들어 실시간으로 업데이트 했다.

초당 1.2 M 전송율 , 로컬 네트워크로 묶을 경우 대역폭을 생각해서 공유기를 선택하면 효율적일듯 함.

 

문제

화면 깜빡거림 문제 : 82 바이트 만큼의 크기가 맞지 않는다.

화면 색 : 전송되는 컬러 바이트 배열순서와 복원 되는 컬러 바이트 배열 순서가 서로 틀려서 나온 결과

ARGB , BGRA , RGBA

 

 

결과 ㅡ

돈주고 화면 스트림 장비나 , 서버를 산다던데,,, 구지,,,

 

 

 

'C#' 카테고리의 다른 글

sqlMetal 사용법  (10) 2013.01.11
Activator 를 이용한 Type Instance 생성  (32) 2012.12.29
[Broadcast Video Streaming]  (149) 2012.11.27
[Tcp] 연속적인 정보를 송출시 유의점  (91) 2012.11.04
[MEMO]  (58) 2012.10.14
[WCF] 간단한 채팅 샘플  (61) 2012.05.12
Yamecoder 야매코더_
C# 2012.11.27 19:05

[WCF] 분산서버 데모

 

 

Yamecoder 야매코더_
분류없음 2012.05.17 10:17

[c# TCP socket] Clinet가 죽은것을 알아채기


<TCP 서버 에서 TCP클라이언트를 이용하는 상황에서..>

TcpClient 클래스 속성중 Connected  라는 속성이 있다. 말그대로 클라이언트가 살았는지 죽었는지

판단하는 속성인데 서버에서 잘 작동하지 않는다. ( 나만 잘 모르는 것일수도 있다.)

그리고 통상적으로 while 루프 안에 스트림을 읽어 오는 코드를 작성한다음

클라이언트 프로그램이 종료 되는경우를 TcpClient 클래스 속성중 Connected  를 이용하면

무한 루프에 빠진다.

해결책은 클라이언트로 오는 바이트 수가 "0" 인것을 확인하여 처리를 해주면 된다.



             while(true)
            {
                /***중요***/
                reciveByte = new byte[1024];
            
                data = reader.ReadLine();
                if(data == null)
                {
                    Invoke(mrg , "클라이언트가 죽었습니다");
                    AceptClient();
                    break;
                }
                
                
                /*** 중요 ***/
                else if(stream.Read(reciveByte , 0 , reciveByte.Length) == 0)
                {
                    Trace.WriteLine("EXIT");
                    AceptClient();
                    break;
                }
            }
/*** 중요 ***/ 라고 되어 있는 부분을 보면 된다.

byte[] 를 하나 만들어  Stream 의 Read 속성을 적용 시켜 주면 된다.

만약 공백이라면 "1" 바이트 를, 값이 날라오지 않는 경우라면 "0"  을 반환 함으로 Client가 죽었는것을 알수 있다.

추가로 첫번째 예외처리는 서버app 를 종료할때 생기는 에러를 대처하기 위함이다.

순간적으로 data 가 Null 값이 됨으로 while 를 탈출하게 해논것이다.
 
 
 
파일 전송중 클라이언트 사망을 눈치 채기 (2012,02,12)
http://scripter.co.kr/203

Yamecoder 야매코더_
C# 2010.12.04 03:51
Powerd by Tistory, designed by criuce
rss