UDP - 没有收到数据报(Java)

时间:2018-04-27 16:45:08

标签: java networking network-programming udp datagram

我有一个程序将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。如果有人可以提供帮助,我真的很感激

0 个答案:

没有答案