Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 1.73 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. TCP Client Disconnects
  2. private void fChat_Load(object sender, EventArgs e)
  3. {
  4.    // fire up listener
  5.    listeningThread.RunWorkerAsync();
  6.  
  7.    // tcp server setup
  8.    _tcpOut = new TcpClient();
  9.    _tcpOut.Connect("127.0.0.1", 54321);
  10. }
  11.  
  12.  
  13.     private void NewFrameReceived(object sender, NewFrameEventArgs e)
  14.     {
  15.         Bitmap img = (Bitmap)e.Frame.Clone();
  16.  
  17.         byte[] imgBytes = EncodeToJpeg(img, 25).ToArray();
  18.         if (_tcpOut.Connected) <-- PROBLEM HERE, THIS IS FALSE ON 2ND ITERATION
  19.         {
  20.             using (NetworkStream ns = _tcpOut.GetStream())
  21.             {
  22.                 if (ns.CanWrite)
  23.                 {
  24.                     ns.Write(BitConverter.GetBytes(imgBytes.Length), 0, 4);
  25.                     ns.Write(imgBytes, 0, imgBytes.Length);
  26.                 }
  27.             }
  28.         }
  29.     }
  30.  
  31.  
  32.     private void listeningThread_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
  33.     {
  34.         // start listening for connections
  35.         _tcpIn = new TcpListener(IPAddress.Any, 54321);
  36.         _tcpIn.Start();
  37.  
  38.         while (true)
  39.         {
  40.             using (TcpClient _inClient = _tcpIn.AcceptTcpClient()) // blocks until connected
  41.             {
  42.                 using (NetworkStream stream = _inClient.GetStream())
  43.                 {
  44.                     Byte[] imgSizeBytes = new Byte[4];
  45.                     stream.Read(imgSizeBytes, 0, 4);
  46.                     int imgSize = BitConverter.ToInt32(imgSizeBytes, 0);
  47.                     Byte[] imgBytes = new Byte[imgSize];
  48.                     stream.Read(imgBytes, 0, imgSize);
  49.                     MemoryStream ms = new MemoryStream(imgBytes);
  50.                     Image img = Image.FromStream(ms);
  51.                     picVideo.Image = img;
  52.                 }
  53.             }
  54.         }
  55.     }