Как отправлять UDP-сообщения с другого исходного IP в c # - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть подходящий ПК с несколькими портами Ethernet. Мне нужно отправлять разные пакеты UDP через разные порты. Как настроить Source IP в Socket Programming для UDP.

Я попробовал следующий код:

    public  void SendMessage()
        {

        try
        {
            ipAddress = "192.168.4.13"; //My source IP

            byte[] byteData = Encoding.ASCII.GetBytes("Hello");
            mainSocketEthernet = new Socket(AddressFamily.InterNetwork,
                SocketType.Raw, System.Net.Sockets.ProtocolType.Udp);
            mainSocketEthernet.Bind(new IPEndPoint(IPAddress.Parse(ipAddress), 0));

            byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
            byte[] byOut = new byte[4] { 1, 0, 0, 0 }; //Capture outgoing packets

            //Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
            mainSocketEthernet.IOControl(IOControlCode.ReceiveAll,              //Equivalent to SIO_RCVALL constant
                                                                                //of Winsock 2
                                 byTrue,
                                 byOut);
            IPEndPoint ipend = new IPEndPoint(IPAddress.Parse(ipAddress), 0);
            EndPoint endip = (EndPoint)ipend;
            mainSocketEthernet.SendTo(byteData,endip);

        }

        catch (Exception ex)
        {

        }

    }

Мои IP-адреса источника на подходящем ПК - 192.168.4.13 и 192.168.4.11.

192.168.4.13, подключенные к удаленномуПК с IP 192.168.4.26.

192.168.4.13, подключенный к удаленному ПК с IP 192.168.4.28.

Я хочу отправить "Hello" на 192.168.4.26 через 192.168.4.13 и "хай "к 192.168.4.28 через 192.168.4.11.

Есть идеи или предложения о том, как отправить сообщение через определенный Source Ip в UDP?

...