void img_sever_RecvedImage(object sender, RecvImageEventArgs e) { if (RecvedImage != null) //이미지 수진 이벤트 구독자가 있을 때 { RecvedImage(this, e); //이미지 수신 이벤트 게시(By Pass) } }
void Receive(Socket dosock) //작업 소켓에서 이미지를 수신하는 Receive 메서드를 구현합시다 { 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(); }
void Singleton_RecvImageEventHandler(object sender, RecvImageEventArgs e) { //만약 한 번도 이미지를 수신하지 않았다면 이벤트 클라이언트를 가동하세요. if (check == false) { Controller.Singleton.StartEventClient(); check = true; csize = e.Image.Size; //이벤트 인자로 받은 부분은 원격 제어 호스트의 데스크 톱 화면의 크기입니다. } pbox_remote.Image = e.Image; //수신한 이미지로 pbox_remote의 Image 속성을 설정하면 수신한 이미지를 PictureBox에 표시합니다. }