Aqui estão duas pessoas se comunicando. É julgado com base no IP. Não há problema entre eles.
Copie o código do código da seguinte forma:
importar java.io.BufferedReader;
importar java.io.IOException;
importar java.io.InputStreamReader;
importar java.net.DatagramPacket;
importar java.net.DatagramSocket;
importar java.net.InetAddress;
importar java.net.SocketException;
importar java.net.UnknownHostException;
classe pública eu {
public static void main(String[] args) lança IOException {
new ReciveThread().start();//O ouvinte de configuração deve ser colocado na frente
new SendInfo().main(args);
}
}
classe EnviarInfo {
public static void main(String[] args) lança IOException {
BufferedReader bf = novo BufferedReader(novo InputStreamReader(System.in));
String str = nulo;
Linhas de string = "";
while ((str = bf.readLine()) != null) {
linhas +=str;
if (str.equals("ok")) {
enviar(linhas);
linhas = "";
}
if (str.equals("tchau")) {
bf.close(); // break deve ser adicionado, caso contrário haverá um sinal de retorno de carro break;
}
}
}
estático void enviar(String str) {
//programa de rede UDP
DatagramSocket ds=nulo;
DatagramPacket dp = null;
tentar {
ds = new DatagramSocket(3000); //Abre o número da porta
} catch (SocketException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
tentar {
byte[] ip = novo byte[] { (byte) 10, 1, 1, (byte) 200 };
dp = novo DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByAddress(ip), 9000);//faso
} catch (UnknownHostException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
tentar {
ds.enviar(dp);
System.out.println("envio com sucesso");
} catch (IOException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
ds.close();
}
}
classe ReciveThread estende Thread {
execução nula pública() {
enquanto (verdadeiro) {
DatagramSocket ds=nulo;
byte[] buf = novo byte[1024];
DatagramPacket dp = null;
tentar {
ds = new DatagramSocket(9000); //Abre a porta
} catch (SocketException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
dp = novo DatagramPacket(buf, 1024);
tentar {
ds.receber(dp);
} catch (IOException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
}
String str = new String(dp.getData(), 0, dp.getLength()) + "de"
+ dp.getAddress().getHostAddress() + ":porta" + dp.getPort();
System.out.println(str);
ds.close();
}
}
}