UDP - датаграмма не получена (Java) - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть программа, которая отправляет UDP DatagramPackage в сеть. но компьютер получателя не получает посылку. обратите внимание, что код находится на обоих компьютерах. у компьютера отправителя ip-адрес 10.0.0.3, а у компьютера получателя ip-адрес 10.0.0.6.

вот код, который работает на обоих компьютерах (код написан на java 9)

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Main
{
  //field
    private static final int PORT = 60003;
    private static final String IP = "10.0.0.3";// or 10.0.0.6 for the receiver computer
  //methods

    public static void main(String[] args)
    {
        snd();
        rcv();


    }//main method

    public static void snd()
    {
        (new Thread() {
            @Override
            public void run()
            {
                try(DatagramSocket s = new DatagramSocket())
                {
                    while(true)
                    {

                        String st = new Scanner(System.in).next();
                        DatagramPacket packet = new DatagramPacket(st.getBytes(),st.getBytes().length ,InetAddress.getByName(IP), PORT);
                        s.send(packet);
                        Thread.yield(); 
                    }
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        }).start();
    }//send method


    public static void rcv()
    {
        (new Thread() {
            @Override
            public void run()
            {
                try(DatagramSocket s = new DatagramSocket(PORT))
                {
                    while(true)
                    {
                        byte[] b = new byte[1024];
                        DatagramPacket packet = new DatagramPacket(b, b.length);
                        s.receive(packet);
                        for(int i = 0 ; i<packet.getLength() ; i++)
                        {
                            System.out.print((char) b[i]);
                        }
                    }

                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
        }).start();
    }//receive method
}//class Main

Я не могу найти проблему, так как код, отправленный отправителем 10.0.0.3, получает 10.0.0.3, но не получает 10.0.0.6. я действительно ценю, если кто-то может помочь

...