[C# Socket ] 파일전송중 Client 가 죽은것 알아채기 2


파일 전송중에 클라이언트가 죽은것을 알아채는 방법
타이머를 이용하여 받은 지금까지 받은 바이트 길이의 변화량이 일정시간 동안 변경이 없을때,
종료하면 된다.

 
int contentByteLength = 0;
            int totalbytelength;
                        
            bool exitCheck = false;
            int checkIntValue = 0;

            checkTimer = new Timer(1000);
            checkTimer.Elapsed += delegate 
            {
                if (checkIntValue == contentByteLength)
                {
                    Console.WriteLine("check!");
                    exitCheck = true;
                    checkTimer.Dispose();
                    checkTimer.Close();
                    checkTimer = null;
                }

                Console.WriteLine("Ele" + contentByteLength + " " + System.Threading.Thread.CurrentThread.ManagedThreadId);
                checkIntValue = contentByteLength;
            };
            
            checkTimer.Start();

            FileStream fs = new FileStream(@"c:\test\" + name + ".zip", FileMode.OpenOrCreate, FileAccess.Write);
            while (contentByteLength < totalbytelength)
            {
                if (client.Available > 0)
                {
                    byte[] receive = new byte[client.Available];
                    client.Receive(receive);
                    fs.Write(receive, 0, receive.Length);
                    contentByteLength += receive.Length;
                    
                }
                
                if (exitCheck)
                {
                    break;
                }
            }




            fs.Close();
            client.Close();
            Console.WriteLine("end! " + contentByteLength + " " );

            

Yamecoder 야매코더_
C# 2012.02.12 19:58
Powerd by Tistory, designed by criuce
rss