Работа вам нужна срочно. Не волнуйтесь, уложимся!
Заполните, пожалуйста, данные для автора:
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
На изображении видно, что вы работаете над сетевым приложением с использованием сокетов в C#. Программу пытаются отправить UDP сообщение с помощью сокета listeningSocket, но возникает ошибка System.NullReferenceException, что говорит о том, что объект listeningSocket не был инициализирован, то есть он равен null.
Исключение System.NullReferenceException происходит, когда вы пытаетесь использовать объект, который не был инициализирован. В вашем случае, сокет listeningSocket не был создан перед вызовом метода Send. Строка, вызывающая ошибку:
listeningSocket.SendTo(data, remotePoint);
Переменная listeningSocket на данный момент равна null, и поэтому код не может выполнить отправку данных.
Для решения данной ошибки необходимо сначала инициализировать сокет перед его использованием.
listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
listeningSocket.Bind(new IPEndPoint(localIP, localPort));
using System.Net;
using System.Net.Sockets;
using System.Text;
public void Send(string message) {
byte[] data = Encoding.Unicode.GetBytes(message);
if (listeningSocket == null) {
listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Any, localPort);
listeningSocket.Bind(localEndpoint);
}
EndPoint remotePoint = new IPEndPoint(IPAddress.Broadcast, remotePort);
listeningSocket.SendTo(data, remotePoint);
}
Также обратите внимание на правильную конфигурацию адресов (remoteIP, remotePort, localIP, localPort), чтобы ваш код правильно работал в сети.