В клиенте UDP после выполнения:
socket.SendTo(data, SendIP);
Почему socket.LocalEndPoint меняется?
Если вы никогда не вызывали socket.Bind, то при первой передаче стек UDP автоматически назначит вам локальный адрес.
Цитата из MSDN:
Если вы используете протокол без установления соединения, вам не нужно устанавливать удаленный хост по умолчанию с методом Connect до вызова SendTo. .... Вам также не требуется вызывать метод Bind, поскольку основной поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта.