Я хочу сделать консольное приложение для чата Broadcast на С#, создать задачу прослушивания и отправлять истинные сообщения. Но когда я попытался запустить второго пользователя, у меня возникла ошибка, что сокет уже использует порт. Как это исправить? а что я не правильно делаю? Ошибка снимка экрана – › Ошибка
private static int localPort = 15000;
private static string nickName;
private static string msg;
private static string datasend;
private static string fullmsg;
[STAThread]
static void Main(string[] args)
{
try
{
Console.WriteLine("Enter your Nickname:");
nickName = Console.ReadLine();
Thread tRec = new Thread(new ThreadStart(Receiver));
tRec.Start();
while (true)
{
msg = Console.ReadLine();
datasend = DateTime.Now.ToString();
fullmsg = datasend + ":" + nickName + "-" + msg;
Send(fullmsg);
}
}
}
private static void Send(string datagram)
{
UdpClient sender = new UdpClient();
sender.EnableBroadcast = true;
IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, localPort);
try
{
byte[] bytes = Encoding.UTF8.GetBytes(datagram);
sender.Send(bytes, bytes.Length, endPoint);
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.ToString() + "\n " + ex.Message);
}
finally
{
sender.Close();
}
}
public static void Receiver()
{
UdpClient receivingUdpClient = new UdpClient(localPort);
receivingUdpClient.EnableBroadcast = true;
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, localPort);
try
{
Console.WriteLine("\n-----------*******Chat*******-----------");
while (true)
{
byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.UTF8.GetString(receiveBytes);
Console.WriteLine(" --> " + returnData.ToString());
}
}
IOException
и не пытаться прослушивать трансляции. Если вы действительно хотите, чтобы два или более процессов на одном компьютере получали одно и то же... - person Peter Duniho   schedule 14.03.2021SO_REUSEADDR
, чтобы процессы совместно использовали широковещательный порт локально, но это, вероятно, вызовет гораздо более серьезные проблемы, чем те, которые у вас есть сейчас. Я настоятельно рекомендую против этого. Смотрите дубликат для более подробной информации. - person Peter Duniho   schedule 14.03.2021