Мой вопрос связан с чатом, который я разрабатываю.Иногда, когда я включаю определенный компьютер в своей локальной сети, он перестает общаться с другими (то есть сообщения не приходят на другие компьютеры и не приходят к нему), эта проблема обычно решает перезагрузку компьютера, ноэто не приятно, достигать этого конца.
Я разделяю программирование ниже:
private UdpClient udpClient;
private UdpClient client;
private IPAddress multiCastAddress;
private IPEndPoint remoteEp;
private void Listen()
{
try
{
client = new UdpClient
{
ExclusiveAddressUse = false
};
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 2222);
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, optionValue: true);
client.ExclusiveAddressUse = false;
client.Client.Bind(remoteEP);
client.JoinMulticastGroup(multiCastAddress);
while (alive)
{
Byte[] data = client.Receive(ref remoteEP);
string message = Encoding.UTF8.GetString(data);
cliente.OnMessageRecieved(new MessageEventArgs(message));
}
}
catch (Exception ex) { Crearlog(ex); }
}
private void ConnectToChat()
{
try
{
multiCastAddress = IPAddress.Parse("239.0.0.222");
udpClient = new UdpClient();
udpClient.JoinMulticastGroup(multiCastAddress);
remoteEp = new IPEndPoint(multiCastAddress, 2222);
}
catch (Exception ex) { Crearlog(ex); }
}
public void Transmit(string typeMessage, string content = "")
{
SmallMessage msg = new SmallMessage();
msg.Handle = NickName;
msg.typeMessage = typeMessage;
msg.UserSelectedColor = UserSelectedColor;
msg.content = content;
if (typeMessage == "RecargarLista")
msg.content = Avatarlength.ToString();
byte[] buffer = Encoding.UTF8.GetBytes(msg.ToJson());
udpClient.Send(buffer, buffer.Length, remoteEp);
}