ViniGodoy:
Posta os códigos aí.
O duro é que se tratando de UDP, é difícil dizer se o pacote chegou mesmo ou não.
Fala ViniGodoy, valeu pela ajuda. Realmente o bug parece ser outro, o que eu descobri que está acontecendo é o seguinte:
Quando primeiro cliente tenta se conectar, o servidor não identifica. O servidor somente está identificando a partir do segundo cliente em diante.. Estranho não ? A aplicação em sí funciona normalmente, após as conexões serem estabelecidas. Vou mostrar o código relativo à conexão UDP, pois há uma factory que cria conexões que podem ser TCP ou UDP (o servidor diz que tipo de servidor ele será), e o cliente diz que tipo de conexão ele vai ter (tcp/udp). A parte TCP está normal.
segue:
public class StringServer_UDP extends StringServer {
private DatagramSocket socket;
public StringServer_UDP(int porta) {
try {
socket = new DatagramSocket(porta);
socket.setSoTimeout(0);
} catch (SocketException e) {
e.printStackTrace();
}
}
public StringConnection acceptConnection() throws IOException {
log("Esperando clientes...");
DatagramPacket packet = new DatagramPacket(new byte[1024], 1023);
socket.receive(packet);
log("Novo cliente chegou: "+packet.getAddress().getHostAddress()+" @ "+packet.getPort());
return new StringConnection_UDP(socket, packet);
}
}
O código acima parece ser executado corretamente, pois o socket.receive(socket) fica bloqueado até receber o pacote.
O código abaixo é executado pelo cliente onde IP = localhost e porta = 9876 (porta do servidor).
[/code]
public StringConnection_UDP(String ip, int porta) {
System.out.println(ip);
System.out.println(porta);
try {
dtSocket = new DatagramSocket();
dtSocket.setSoTimeout(0);
InetAddress IPAddress = InetAddress.getByName("localhost");
String h = "hello";
DatagramPacket sendPacket = new DatagramPacket(h.getBytes(), h.getBytes().length, IPAddress, porta);
dtSocket.send(sendPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
O que acho mais estranho é o fato de que o servidor só enxerga a partir da segunda conexão do cliente, o que mostra que os códigos acima "funcionam". O problema mesmo, como voce bem falou vini, é que em udp não da pra saber se o pacote realmente chegou, pois não há estabelecimento de conexão como em tcp.
Basicamente é isso,
obrigado.