对等2对等UDP套接字?

我尝试使用UDP套接字建立点对点网络,但我无法设法让两个节点相互通信。 看起来,作为客户端的节点由于某种原因无法连接到作为服务器的节点。

public class PeerNode {

    DatagramSocket clientSocket;

    public void sendRequest(String sentence, String host, int port) throws UnknownHostException, IOException{

        clientSocket = new DatagramSocket (port);
        InetAddress IPAddress = InetAddress.getByName(host);   
        byte[] sendData = new byte[1024];       
        System.out.println(sentence);
        sendData = sentence.getBytes();        
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); 
        clientSocket.send(sendPacket);
    }

    void mainLoop() throws IOException{
        try {
            // Establish the listen socket.
            DatagramSocket serverSocket = new DatagramSocket(9876);   
            byte[] receiveData = new byte[1024]; 
            System.out.println("listening on port " + serverSocket.getLocalPort());
            //int count =0;
            while (true) {
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                serverSocket.receive(receivePacket);
                String sentence = new String( receivePacket.getData());
                System.out.println("Server:  "+sentence);
                RequestHandler request =new RequestHandler     

                // Create a new thread to process the request.
                Thread thread = new Thread(request);

                // Start the thread.
                thread.start(); 
                //count++;
            }     
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


public class RequestHandler implements Runnable{

    DatagramPacket packet;
    DatagramSocket socket;
    byte[] sendData = new byte[1024];

    public RequestHandler(DatagramPacket packet,DatagramSocket socket) throws Exception 
    {
        this.packet = packet;
        this.socket = socket;
        String sentence = new String(packet.getData()); 
        System.out.println("handler : "+sentence);
    }

    @Override
    public void run() 
    {
        try {
            System.out.println("Test");
            processRequest();
        } catch (Exception e) {
            System.out.println(e);
        }
    }   

    /*
     * Gets a request from a node. 
     */
    private void processRequest() throws Exception 
    {
        String sentence = new String( packet.getData());                   
        System.out.println("RECEIVED: " + sentence);                   
        InetAddress IPAddress =packet.getAddress();                   
        int port = packet.getPort();                   
        String capitalizedSentence = sentence.toUpperCase();                   
        sendData = capitalizedSentence.getBytes();                   
        DatagramPacket sendPacket =new DatagramPacket(sendData, sendData.length, IPAddress, port);
        socket.send(sendPacket);
        socket.close();
    }

}


public class ClientServer {

    public static void main( String [] args ) throws IOException{

        PeerNode node1=new PeerNode();
        PeerNode node2=new PeerNode();

        node1.sendRequest("Hellllll", "localhost",9876);
        node2.mainLoop();

    }
}
链接地址: http://www.djcxy.com/p/35095.html

上一篇: peer 2 peer UDP sockets?

下一篇: Java: Invalid keystore format, when generated through code