|
import java.net.*;
import java.io.*;
 public class EchoClient {
private String remoteHost="localhost";
private int remotePort=8000;
private DatagramSocket socket;

 public EchoClient()throws IOException {
socket=new DatagramSocket(); //與本地的任意一個UDP端口綁定
}
 public static void main(String args[])throws IOException {
new EchoClient().talk();
}
 public void talk()throws IOException {
 try {
InetAddress remoteIP=InetAddress.getByName(remoteHost);

BufferedReader localReader=new BufferedReader(new InputStreamReader(System.in));
String msg=null;
 while((msg=localReader.readLine())!=null) {
byte[] outputData=msg.getBytes();
DatagramPacket outputPacket=new DatagramPacket(outputData,
outputData.length,remoteIP,remotePort);
socket.send(outputPacket); //給EchoServer發(fā)送數(shù)據(jù)報
DatagramPacket inputPacket=new DatagramPacket(new byte[512],512);
socket.receive(inputPacket);
System.out.println(new String(inputPacket.getData(),0,inputPacket.getLength()));
if(msg.equals("bye"))
break;
}
 }catch(IOException e) {
e.printStackTrace();
 }finally {
socket.close();
}
}
}



 /** *//****************************************************
* 作者:孫衛(wèi)琴 *
* 來源:<<Java網(wǎng)絡編程精解>> *
* 技術支持網(wǎng)址:www.javathinker.org *
***************************************************/

import java.io.*;
import java.net.*;
 public class EchoServer {
private int port=8000;
private DatagramSocket socket;

 public EchoServer() throws IOException {
socket=new DatagramSocket(port); //與本地的一個固定端口綁定
System.out.println("服務器啟動");
}

 public String echo(String msg) {
return "echo:" + msg;
}

 public void service() {
 while (true) {
 try {
DatagramPacket packet=new DatagramPacket(new byte[512],512);
socket.receive(packet); //接收來自任意一個EchoClient的數(shù)據(jù)報
String msg=new String(packet.getData(),0,packet.getLength());
System.out.println(packet.getAddress() + ":" +packet.getPort()
+">"+msg);
packet.setData(echo(msg).getBytes());
socket.send(packet); //給EchoClient回復一個數(shù)據(jù)報
 }catch (IOException e) {
e.printStackTrace();
}
}
}

 public static void main(String args[])throws IOException {
new EchoServer().service();
}
}



 /** *//****************************************************
* 作者:孫衛(wèi)琴 *
* 來源:<<Java網(wǎng)絡編程精解>> *
* 技術支持網(wǎng)址:www.javathinker.org *
***************************************************/

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

 public class SendUdpData {
private String remoteHost = "localhost";
private int remotePort = 8000;
private DatagramSocket socket;

 public SendUdpData() throws IOException {
socket = new DatagramSocket(); // 與本地的任意一個UDP端口綁定
}

 public void sendData() {
 try {
InetAddress remoteIP = InetAddress.getByName(remoteHost);
byte[] outputData = "Hello!".getBytes();
DatagramPacket outputPacket = new DatagramPacket(outputData,
outputData.length, remoteIP, remotePort);
socket.send(outputPacket); // 給EchoServer發(fā)送數(shù)據(jù)報
 } catch (UnknownHostException e) {
e.printStackTrace();
 } catch (IOException e) {
e.printStackTrace();
 } finally {
socket.close();
}
}

 public static void main(String[] args) throws IOException {
new SendUdpData().sendData();
}
}

|