我的问题与我正在开发的聊天有关。有时,当我打开本地网络中的某台PC时,它停止与其他PC进行通信(也就是说,消息没有到达其他PC,也没有到达他的另一台PC),此问题通常可以解决重新启动PC的问题,但是到达终点并不愉快。
我分享以下程序:
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);
}