Neo4 Posted April 6, 2009 at 08:58 PM Report #255566 Posted April 6, 2009 at 08:58 PM Boas, estou a tentar criar um programa simples em java em que um cliente envia por UDP uma mensagem ao servidor e ele responde, o problema é que não estou a conseguir 🙂 se colocar o cliente ou o servidor a correr o outro não corre da o seguinte erro: Exception in thread "main" java.net.BindException: Address already in use: Cannot bind at java.net.PlainDatagramSocketImpl.bind0(Native Method) at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:82) at java.net.DatagramSocket.bind(DatagramSocket.java:368) at java.net.DatagramSocket.<init>(DatagramSocket.java:210) at java.net.DatagramSocket.<init>(DatagramSocket.java:261) at java.net.DatagramSocket.<init>(DatagramSocket.java:234) at udpserver.Servidor.main(Servidor.java:20) Java Result: 1 codigo servidor: ~package udpserver; import java.net.*; import java.io.*; /** * * @author neo4 */ public class Servidor { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception{ String message; byte [] sendData = new byte [1024]; byte[] receiveData = new byte[1024]; int porta = 1111; DatagramSocket socket = new DatagramSocket(porta); while(true){ DatagramPacket pacoteRecebido = new DatagramPacket(receiveData, receiveData.length); socket.receive(pacoteRecebido); String mensagemrecebida = new String(pacoteRecebido.getData()); System.out.println(mensagemrecebida); InetAddress IPAddress = pacoteRecebido.getAddress(); int port = pacoteRecebido.getPort(); } } } código cliente: package udpclient; import java.net.*; import java.io.*; /** * * @author neo4 */ public class Cliente { public static void main(String[] args) throws Exception { byte [] sendData = new byte [1024]; byte[] receiveData = new byte[1024]; int porta = 1111; String localhost = "127.0.0.1"; InetAddress IPAddress = InetAddress.getByName(localhost); String mensagemAenviar = "eu cliente falo para ti"; sendData= mensagemAenviar.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, porta); DatagramSocket clientSocket = new DatagramSocket(); clientSocket.send(sendPacket); clientSocket.close(); } } Obrigado
magician Posted April 6, 2009 at 09:11 PM Report #255571 Posted April 6, 2009 at 09:11 PM Não podes ter os 2 a trabalhar na mesma maquina e na mesma porta! Dai o erro que te dá. Basta mudares a porta de um dos dois e deve funcionar. I haven’t lost my mind; it’s backed up on DVD somewhere!
Neo4 Posted April 6, 2009 at 09:22 PM Author Report #255575 Posted April 6, 2009 at 09:22 PM mas se o servidor cria um socket na porta 1001 como é que recebe o do cliente que envia pela porta 1000 por exemplo? não há esse problema? se mudar a porta correm os 2 ao mesmo tempo mas nao acontece nada ou seja o servidor nao recebe o texto do cliente
Neo4 Posted April 6, 2009 at 09:32 PM Author Report #255577 Posted April 6, 2009 at 09:32 PM nem comento o problema que me fez perder 2h... no netbeans tinha que correr isoladamente cada um (1º server e dp cliente) e nao compilar e correr o projecto... lol e a porta tem que ser a mesma 🙂
magician Posted April 6, 2009 at 10:00 PM Report #255589 Posted April 6, 2009 at 10:00 PM Tem de ser a mesma ?? Hummm pá eu por acaso UDP em Java acho que só mexi uma vez mas tinha ideia que eram diferente :S enfim lol I haven’t lost my mind; it’s backed up on DVD somewhere!
Neo4 Posted April 6, 2009 at 10:03 PM Author Report #255592 Posted April 6, 2009 at 10:03 PM sim tem, tu crias um socket que fica À "escuta" nessa porta e outro que envia para essa porta, atenção que são sockets UDP ou seja não há conexão estabelecida previamente... nos TCP já é outra conversa 🙂
magician Posted April 6, 2009 at 10:05 PM Report #255593 Posted April 6, 2009 at 10:05 PM Pois eu usei UDP uma vez em C já á bastante tempo em Java ainda nunca usei, tenho sempre usado TCP. I haven’t lost my mind; it’s backed up on DVD somewhere!
bruno1234 Posted April 6, 2009 at 11:29 PM Report #255626 Posted April 6, 2009 at 11:29 PM As portas TCP e UDP são gamas diferentes. Podes usar a TCP 10000 e a UDP 10000 q não é a mesma. Para o caso basta usar uma porta TCP e uma UDP, desde que não estejam ocupadas claro. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now