java-udp programming -sending message from server to the client

I made connection between server and client properly and i send message from client to the server,but how can i send messages from server to client.I mean how can i make server act like a client too.i tried to copy the client methods to the another class that server can invoke.but i couldnt then i tried to create a new package to use the client code in server class.any advices?

ps:Sorry about my english.

public class Entrance_Server extends JFrame{

JButton buton = new JButton("Create");
JButton buton2 = new JButton("Join");
JPanel butonpanel = new JPanel();
DatagramSocket sockServer = null;
DatagramSocket sockClient = null;
int port = 7777;
String s;
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));



public Entrance_Server() {

    setLayout(new GridLayout(2,1));

    add(buton);
    add(buton2);

    buton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {

            Choosing c = new Choosing();
            c.start();

            System.out.println("Server socket created. Waiting for incoming data...");



        }
    });

    buton2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            Choosing c = new Choosing();
            c.start();



        }
    });

}


public static void main(String[] args){

    Entrance_Server e = new Entrance_Server();
    e.setSize(500,350);
    e.setTitle("Welcome");
    e.setLocationRelativeTo(null);
    e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    e.setVisible(true);

    e.connect();

}

public void connect (){

        try{
                sockServer = new DatagramSocket(7777);
                byte[] buffer = new byte[65536];
                DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);

                while(true)
        {
            sockServer.receive(incoming);
            byte[] data = incoming.getData();
            String s = new String(data, 0, incoming.getLength());

            //echo the details of incoming data - client ip : client port - client message
            System.out.println(incoming.getAddress().getHostAddress() + " : " + incoming.getPort() + " - " + s);

            s = "OK : " + s;
            DatagramPacket dp = new DatagramPacket(s.getBytes() , s.getBytes().length , incoming.getAddress() , incoming.getPort());
            sockServer.send(dp);

            Entrance_Client_in_Server ec = new Entrance_Client_in_Server();
            ec.connectc();


        }
            }catch(IOException i){
                System.err.println("IOException " + i);
            }



}



}

Answers


On your client u need to wait on the server response by using socket.Receive()

You can identify a client after he has send a packet to the server like you are doing. You can then indentify the client like this: InetAddress address = packet.getAddress(); int port = packet.getPort();

And use it to send a packet back to the client, which will read the response using the socket.Receive();

For further information about Client/Server connection using UDP DatagramSockets check Client-Server Datagram sockets


Need Your Help

maven - Failed to execute cargo:start

java maven servlets deployment cargo

I'm trying to configure cargo automatic deployment in my servlet project and I have these in pom.xml file:

Syntax highlighting HTML with links

html syntax-highlighting highlighting pygments codehighlighter

Is there a tool available which would convert the sources given into HTML with links?