1,在有外网ip的机器上启动server。

package udp;

import java.net.DatagramPacket;
import java.net.InetSocketAddress;

public class Server extends UDPAgent {
    public static void main(String[] args) throws Exception {
        new Server(2008).start();
    }

    public Server(int port) {
        super(port);
    }

    public void onReceive(DatagramPacket rec) {
        try {
            println("=== Server OnReceive ===");
            String s = rec.getSocketAddress().toString();
            String msg = new String(rec.getData(), rec.getOffset(),
                    rec.getLength());
            //if receive client's first log on, return its NAT port.
            if (msg.trim().startsWith("register")) {
                DatagramPacket outPacket = new DatagramPacket(s.getBytes(),
                s.length(), rec.getSocketAddress());
                // 发送数据

                ds.send(outPacket);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void doSend(String cmd) throws Exception {
        println("====server's doSend=====");
        println("CMD: " + cmd);
        String[] s = cmd.split(" ", 4);
        // println("===split cmd=========");
        // for(String item:s){
        // println(item);
        // }
        // println("============");
        int port = Integer.parseInt(s[2]);
        InetSocketAddress target = new InetSocketAddress(s[1], port);
        String msg = s[0]+" "+s[3];
        doSend(target, msg.getBytes());
    }
}
View Code

相关文章:

猜你喜欢
  • 2021-12-01
  • 2021-04-14
  • 2021-06-01
  • 2022-12-23
  • 2022-01-10
  • 2021-12-15
  • 2021-12-15
相关资源
相似解决方案