Enviado em 21/09/2013 - 23:44h
Pessoal, o código abaixo é de um exemplo de aplicação usando sockets com protocolo UDP, onde o cliente lê 2 valores envia para o servidor que efetua o cálculo da soma devolvendo o resultado para o cliente, mas o servidor não esta enviando como deveria.
import java.io.*;
import java.net.*;
public class CalcServerUDP {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] r1 = new byte[10];
byte[] s1 = new byte[10];
byte[] r2 = new byte[10];
byte[] s2 = new byte[10];
while(true)
{
DatagramPacket recebep1 = new DatagramPacket(r1,r1.length);
serverSocket.receive(recebep1);
DatagramPacket recebep2 = new DatagramPacket(r2, r2.length);
serverSocket.receive(recebep2);
String v1 = new String(recebep1.getData());
String v2 = new String(recebep2.getData());
int port = recebep1.getPort();
int valor1 = Integer.parseInt(v1);
int valor2 = Integer.parseInt(v2);
int res = valor1 + valor2;
String result = String.valueOf(res);
InetAddress ip = recebep1.getAddress();
s1 = result.getBytes();
DatagramPacket sendPacket = new DatagramPacket(s1,s1.length, ip, port);
serverSocket.send(sendPacket);
System.out.println("Resultado = " + res);
}
}
}
import java.io.*;
import java.net.*;
public class CalcClientUDP {
public static void main(String args[]) throws Exception
{
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress ip = InetAddress.getByName("localhost");
byte[] env1 = new byte[10];
byte[] env2 = new byte[10];
byte[] rec1 = new byte[10];
byte[] rec2 = new byte[10];
String strv1, strv2;
System.out.println("valor 1: ");
strv1 = entrada.readLine();
System.out.println("valor2 :");
strv2 = entrada.readLine();
env1 = strv1.getBytes();
env2 = strv2.getBytes();
DatagramPacket envp1 = new DatagramPacket(env1,env1.length,ip,9876);
clientSocket.send(envp1);
DatagramPacket envp2 = new DatagramPacket(env2,env2.length,ip,9876);
clientSocket.send(envp2);
/*DatagramPacket recp1 = new DatagramPacket(rec1,rec1.length);
clientSocket.receive(recp1);
DatagramPacket recp2 = new DatagramPacket(rec2,rec2.length);
clientSocket.receive(recp2);
String result = new String(recp1.getData()+recp2.getData());
String.out.println("Resultado = " +result);*/
clientSocket.close();
}
}