|
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发送数据报
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();
}
}
}
/** *//****************************************************
* 作者:孙卫琴 *
* 来源:<<Java网络编程精解>> *
* 技术支持网址: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的数据报
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回复一个数据报
}catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String args[])throws IOException {
new EchoServer().service();
}
}
/** *//****************************************************
* 作者:孙卫琴 *
* 来源:<<Java网络编程精解>> *
* 技术支持网址: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发送数据报
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
socket.close();
}
}
public static void main(String[] args) throws IOException {
new SendUdpData().sendData();
}
}
|