Я хотел бы связать сетевой адаптер для прослушивания определенного порта с определенного IP-адреса.Я настроил внутренний процесс отправки / получения в своем коде для тестирования.Мне удалось разрешить прослушивание настраиваемого значения порта и поставить проверки, чтобы убедиться, что он получает только с определенного IP-адреса.Моя проблема в том, что когда я настраиваю свою конечную точку в качестве значения NIC, я могу получать только сообщения, отправленные на этот IP.Возможно, мне не хватает понимания UDP, но, как мне кажется, от меня ожидают, что я связываю сетевой адаптер, чтобы выбрать его в качестве устройства, на котором должен быть принят пакет, но он должен иметь возможность принимать отправляемый пакет.скажем, транслируемый IP.Может быть, это в корне неверно, но вот мой код.
Если это невозможно, и необходимо назначить IP NIC для отправки со стороны отправителя, объясните, в противном случае кто-то может посоветоватьмне, как связать мой NIC, но все еще смотрю, чтобы получать пакеты, отправленные на другие IP-адреса.
, так вот мой получатель
public void StartListening()
{
if (init == true)
{
running = true;
listenEndpoint = new IPEndPoint(Variables.NICIP, Variables.ListenPort);
udp = new UdpClient(listenEndpoint);
init = false;
}
if (running == true)
{
this.udp.BeginReceive(Receive, new object());
}
}
private void Receive(IAsyncResult ar)
{
IPEndPoint ip1 = null;
byte[] bytes1 = null;
if (running == true)
{
bytes1 = udp.EndReceive(ar, ref ip1);
if (ip1.Address.Address == Variables.IPValue.Address)
{
string message = Encoding.ASCII.GetString(bytes1);
Submit = message;
Console.WriteLine(message);
}
}
StartListening();
}
public void Destructor()
{
running = false;
udp.Close();
}
, а вот мой временный отправитель
private void button1_Click(object sender, EventArgs e)
{
Sender hereItComes = new Sender();
hereItComes.Send();
}
public class Sender
{
public void Send()
{
UdpClient client = new UdpClient();
IPEndPoint ip = new IPEndPoint(Variables.NICIP, Variables.ListenPort);
byte[] bytes = Encoding.ASCII.GetBytes("Foo");
client.Send(bytes, bytes.Length, ip);
client.Close();
}
}
}
В идеале я хотел бы поместить любое допустимое значение IP в Variables.NICIP ->, который является IP-адресом NIC, который я назначил, и этот NIC получит пакет.Любая помощь будет принята с благодарностью.