private void Client_DataReceived(Client sernder, ReceiveBuffer e) { BinaryReader r = new BinaryReader(e.BufStream); Commands header = (Commands)r.ReadInt32(); switch (header) { case Commands.String: { string s = r.ReadString(); Invoke((MethodInvoker) delegate { LsItems.Items.Add(s); }); } break; case Commands.Image: { int imageByteLen = r.ReadInt32(); byte[] iBytes = r.ReadBytes(imageByteLen); Invoke((MethodInvoker) delegate { PicBox.Image = Image.FromStream(new MemoryStream(iBytes)); }); iBytes = null; } break; } }
void receiveCallback(IAsyncResult ar) { try { int rec = socket.EndReceive(ar); if (rec == 0) { if (Disconnected != null) { Disconnected(this); return; } if (rec != 4) { throw new Exception(); } } } catch (SocketException se) { switch (se.SocketErrorCode) { case SocketError.ConnectionAborted: case SocketError.ConnectionReset: if (Disconnected != null) { Disconnected(this); return; } break; } } catch (ObjectDisposedException) { return; } catch (NullReferenceException) { return; } catch (Exception ex) { Console.WriteLine(ex.Message); return; } buffer = new ReceiveBuffer(BitConverter.ToInt32(lenBuffer, 0)); socket.BeginReceive(buffer.Buffer, 0, buffer.Buffer.Length, SocketFlags.None, receivePacketCallback, null); }