public void Broadcast(DataType type) { Datagram dataGram = new Datagram { MessageType = type, IPFrom = Config.LocalIPAddress, IPTo = "", Content = Dns.GetHostName() }; this.m_BroadcastSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); this.m_BroadcastSocket.SendTo(Encoding.Default.GetBytes(dataGram.ToString()), m_BroadcastPoint); }
private void AnalysisData(Datagram data) { Contact contact = new Contact(data.Message, data.FromAddress, ComunicationState.Waiting, new IPEndPoint(IPAddress.Parse(data.FromAddress), Config.ListenPort)); //if (!contact.Compare(Config.LocalIPAddress)) //{ switch (data.Type) { case DatagramType.OnLine: this.OnLineEvent(contact); Datagram sendDataGram = new Datagram(DatagramType.GiveInfo); this.m_ListenSocket.SendTo(Encoding.Default.GetBytes(sendDataGram.ToString()), new IPEndPoint(IPAddress.Parse(data.FromAddress), Config.ListenPort)); break; case DatagramType.GiveInfo: if (!contact.Compare(Config.LocalIPAddress)) { this.OnLineEvent(contact); } break; case DatagramType.DownLine: this.DownLineEvent(contact); break; case DatagramType.Chat: Contact chatContact = ContactList.GetContact(data.FromAddress); if (!object.Equals(chatContact, null)) { if (chatContact.State == ComunicationState.Talking) { chatContact.Message = data.Message; this.OnChatEvent(chatContact); } else { chatContact.Message = data.Message; MessageInfo messageInfo = new MessageInfo(chatContact, DateTime.Now); QueueMessage.Add(messageInfo); this.OnChatEvent(chatContact); } } break; } //} }