private void ReceivePacket(IAsyncResult ar) { try { int ReceiveSize = clientSocket.EndReceive(ar); if (ReceiveSize > 0) { byte[] TMPClientReceiveBuffer = new byte[Packet.MaxLength]; Array.Copy(ClientReceiveBuffer, TMPClientReceiveBuffer, Packet.MaxLength); this.clientSocket.BeginReceive(ClientReceiveBuffer, 0, Packet.MaxLength, SocketFlags.None, ReceivePacket, null); Packet[] ReceivePakets = Packet.SplitPackets(TMPClientReceiveBuffer); foreach (Packet ReceivePak in ReceivePakets) { serverSocket.SocketReceivedPacket(this, ReceivePak); } } else { serverSocket.SocketConnectionDisconnected(this); } } catch { serverSocket.SocketConnectionDisconnected(this); } }
void ReceiveEvent_Completed(object sender, SocketAsyncEventArgs e) { try { int ReceiveSize = e.BytesTransferred; if (ReceiveSize > 0) { byte[] TMPReceiveBuffer = new byte[Packet.MaxLength]; Array.Copy(e.Buffer, TMPReceiveBuffer, Packet.MaxLength); SocketAsyncEventArgs ReceiveEvent = new SocketAsyncEventArgs(); ReceiveEvent.Completed += new EventHandler <SocketAsyncEventArgs>(ReceiveEvent_Completed); RawSocket.ReceiveAsync(ReceiveEvent); Packet[] ReceivePakets = Packet.SplitPackets(TMPReceiveBuffer); foreach (Packet ReceivePak in ReceivePakets) { if (ClientSocketPacketReceived_Event != null) { ClientSocketPacketReceived_Event(this, this, ReceivePak); } ReceivedPackets++; } } else { if (ClientSocketDisconnected_Event != null) { ClientSocketDisconnected_Event(this, null); } } } catch { if (ClientSocketDisconnected_Event != null) { ClientSocketDisconnected_Event(this, null); } } }
private void PacketReceived(IAsyncResult ar) { try { int ReceiveSize = RawSocket.EndReceive(ar); if (ReceiveSize > 0) { byte[] TMPReceiveBuffer = new byte[Packet.MaxLength]; Array.Copy(ReceiveBuffer, TMPReceiveBuffer, Packet.MaxLength); RawSocket.BeginReceive(ReceiveBuffer, 0, Packet.MaxLength, SocketFlags.None, new AsyncCallback(PacketReceived), RawSocket); Packet[] ReceivePakets = Packet.SplitPackets(TMPReceiveBuffer); foreach (Packet ReceivePak in ReceivePakets) { if (ClientSocketPacketReceived_Event != null) { ClientSocketPacketReceived_Event(this, this, ReceivePak); } ReceivedPackets++; } } else { if (ClientSocketDisconnected_Event != null) { ClientSocketDisconnected_Event(this, null); } } } catch { if (ClientSocketDisconnected_Event != null) { ClientSocketDisconnected_Event(this, null); } } }