public void Send(IPEndPoint target, SlpPacket packet) { MemoryStream data = new MemoryStream(); SlpBinaryWriter writer = new SlpBinaryWriter(data); SlpPacket.WritePacket(packet, writer); BeginSendTo(data.GetBuffer(), 0, (int)data.Length, SocketFlags.None, target, null, null); }
private void OnReceive(IAsyncResult state) { EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); if (PortOpen) { try { MemoryStream receiveState = (MemoryStream)(state.AsyncState); if (receiveState != null) { EndReceiveFrom(state, ref remoteEndPoint); LastPacket = DateTime.Now; if (NewPacket != null) { SlpBinaryReader dataReader = new SlpBinaryReader(receiveState); //Read the Header SlpPacket packet = SlpPacket.ReadPacket(dataReader); NewPacketEventArgs args = new NewPacketEventArgs(packet); args.SourceEndPoint = (IPEndPoint)remoteEndPoint; NewPacket(this, args); } } } catch (Exception ex) { OnUnhandledException(ex); } finally { //Attempt to receive another packet. StartReceive(); } } }
public NewPacketEventArgs(SlpPacket packet) { Packet = packet; }
public void Send(SlpPacket packet) { packet.Header.Flags |= SlpHeaderFlags.RequestMulticast; Send(new IPEndPoint(MulticastGroup, Port), packet); }