Sockets em Java

fonte

Power Member
Pessoal sou algo po iniciante em sockets e tou com um problema que a meu ver até era simples. O que tou a tentar fazer para já é apenas enviar uma string 10 vezes a partir de um cliente, e do lado do servidor incrementar uma variavel que irá até 10 vezes de acordo com a recepçao da string. Aqui tá o código do cliente e do servidor:


Cliente:

Código:
public static void main(String[] args) throws Exception{
    
        DatagramSocket clientSocket;
                
        try {
            clientSocket = new DatagramSocket() ;

            InetAddress IPAddress = InetAddress.getLocalHost(); 
            byte[] sendData = new byte[1024]; 
 
            String sentence = "ComComp";       
        
            sendData = sentence.getBytes();         

            DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress, 9876);
        
            for(int i=0;i<10;i++) clientSocket.send(sendPacket);
            clientSocket.close(); 
        }
        
        catch(SocketException e){throw new SocketException (e.getMessage()); }
        catch(IOException e){throw new IOException (e.getMessage()); }
    }


Servidor:

Código:
public class Main {
    
    
    public static void main(String[] args) throws Exception {
    
        int i, datagramas=0;
        DatagramSocket serverSocket;
        
        try {
            serverSocket = new DatagramSocket(9876);
            byte[] receiveData = new byte[1024]; 
            while(true) {
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
                serverSocket.receive(receivePacket); 
                
                String sentence = new String(receivePacket.getData(),0,receivePacket.getLength()); 
                datagramas++;    
            } 
          
        }
        
        catch(SocketException e){throw new SocketException (e.getMessage()); }
        catch(IOException e){throw new IOException (e.getMessage());}
    }
}

Quando corro isto dá o seguinte erro:
Exception in thread "main" java.net.SocketException: Address already in use: Cannot bind
at projectoservidor.Main.main(Main.java:42)
Java Result: 1


Se alguem me conseguir ajudar agradeço.
 
Última edição pelo moderador:
Tens mesmo que usar o protocolo UDP? Supondo que conheces os pros e cons do UDP, porque não usas o TCP? Sempre é mais facil começares. E quem sabe até adicionares as Threads, para que ele seja capaz de lidar com vários utilizadores em simultâneo.
Relativamente aos problemas, não tens o servidor a correr algures no pc?
Caso tenhas algum router, abriste um porto UDP para esse porto?
Experimenta reiniciar o pc, e voltar a correr os dois programas.

De resto, não consigo identificar problema algum no código.
 
ja consegui mas tenho de mudar a porta sempre que corro os programas. Tem de ser mesmo udp pois é o objectivo do trabalhar para o qual este codigo vai servir.
 
Back
Topo