Example #1
0
 //이미지 수신 이벤트 핸들러
 void img_sever_RecvedImage(object sender, RecvImageEventArgs e)
 {
     if (RecvedImage != null)  //이미지 수신 이벤트 구독자가 있을 때
     {
         RecvedImage(this, e); //이미지 수신 이벤트 게시(By Pass)
     }
 }
        void Singleton_RecvImageEventHandler(object sender, RecvImageEventArgs e)
        {
            if (check == false)
            {
                Controller.Singleton.StartEventClient();
                check = true;

                csize = e.Image.Size;
            }

            pbox_remote.Image = e.Image;
        }
        void Receive(Socket dosock)
        {
            byte[] lbuf = new byte[4];               //이미지 길이를 수신할 버퍼
            dosock.Receive(lbuf);                    //이미지 길이 수신
            int len = BitConverter.ToInt32(lbuf, 0); //수신한 버퍼의 내용을 정수로 변환

            byte[] buffer = new byte[len];           //이미지 길이만큼의 버퍼 생성
            int    trans  = 0;

            while (trans < len)//수신할 이미지 데이터가 남아있으면
            {
                trans += dosock.Receive(buffer, trans,
                                        len - trans,
                                        SocketFlags.None); //이미지 수신
            }
            if (RecvedImage != null)                       //이미지 수신 이벤트가 존재하면
            {
                //이미지 수신 이벤트 발생
                IPEndPoint         iep = dosock.RemoteEndPoint as IPEndPoint;
                RecvImageEventArgs e   = new RecvImageEventArgs(iep, ConvertBitmap(buffer));
                RecvedImage(this, e);
            }
            dosock.Close();//소켓 닫기
        }