I'm using Netbeans IDE trying to make a UDP connection between client and server, it's a simple program that UDPClient send a String to UDPServer and the server capitalize the string and sends it back to the client.I made the client side and server side in a separated projects.
my class code for the client UDPClient :
    package udpclient;
    import java.io.*;
    import java.net.*;
    public class UDPClient {
        public static void main(String[] args) throws IOException{
            //get input from user
            BufferedReader user_in = new BufferedReader(
                    new InputStreamReader(System.in));
            //create udp socket connection
            DatagramSocket socket = new DatagramSocket();
            //creat buffers to process data
            byte[] inData = new byte[1024];
            byte[] outData = new byte[1024];
            //get ip destination wanted
            InetAddress IP = InetAddress.getByName("localhost");
            //read data from user
            System.out.println("Enter Data to send to server: ");
            outData = user_in.readLine().getBytes();
            /*
             * make pkts for interaction
             */
            //send pkts
            DatagramPacket sendPkt = new DatagramPacket(outData, outData.length, IP, 9876);
            socket.send(sendPkt);
            //receive pkts
            DatagramPacket recievePkt = new DatagramPacket(inData, inData.length);
            socket.receive(recievePkt);
            System.out.println("Replay from Server: "+recievePkt.getData());
        }
    }
and my server side class UDPServer:
    package udpserver;
    import java.io.*;
    import java.net.*;
    public class UDPServer {
        public static void main(String[] args) throws IOException{
            // TODO code application logic 
            //connection
            DatagramSocket socket = new DatagramSocket();
            //pkt buffers
            byte[] inServer = new byte[1024];
            byte[] outServer = new byte[1024];
            //receive pkt
            DatagramPacket rcvPkt = new DatagramPacket(inServer,inServer.length);
            socket.receive(rcvPkt);
            //display receive
            System.out.println("Packet Received!");
            //retrive pkt info to send response to same sender
            InetAddress IP = rcvPkt.getAddress();
            int port = rcvPkt.getPort();
            //process data
            String temp = new String(rcvPkt.getData());
            temp = temp.toUpperCase();
            outServer = temp.getBytes();
            //send response packet to sender
            DatagramPacket sndPkt = new DatagramPacket(outServer, outServer.length, IP, port);
            socket.send(sndPkt);
        }
    }
make in count that the program runs normally and outputs no error. the server doesn't receive the packet at all , it didn't interact with the client. why does that happened ?
You haven't specified any listening port in your server so the server listen on a random available port.
Try with this on server side
DatagramSocket socket = new DatagramSocket(9876);
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With