服务端:
package com.softeem.net.udp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FeiQSender {
public static void main(String[] args) throws IOException {
File file = new File("read.txt");
SimpleDateFormat sdf = new SimpleDateFormat("[yyyyMMddHHmmss]");
String ip = "127.0.0.1";
//创建基于UDP协议的网络通道
DatagramSocket ds = new DatagramSocket(8048);
//获取标准输入流并包装为缓冲流
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DatagramPacket dp = null;
byte[] b = null;
String msg = "";
while(!(msg = br.readLine()).equals("quit")){
//接受消息
b = msg.getBytes();
dp = new DatagramPacket(b, 0, b.length, InetAddress.getByName(ip), 8089);
ds.send(dp);
String s = sdf.format(new Date())+"小明";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file,true));
String note = s+msg;
bos.write(note.getBytes(),0,note.getBytes().length);
bos.write(("\r\n").getBytes());
bos.flush();
//发送消息
ds.receive(dp);
msg = new String(dp.getData(),0,dp.getLength());
System.out.println(dp.getAddress().getHostAddress()+":"+msg);
}
}
}
客户端:
package com.softeem.net.udp;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FeiQReceiver {
public static void main(String[] args) throws IOException {
File file = new File("read.txt");
SimpleDateFormat sdf = new SimpleDateFormat("[yyyyMMddHHmmss]");
String ip = "127.0.0.1";
DatagramSocket ds = new DatagramSocket(8089);
byte[] b = new byte[128];
String msg = "";
// 获取标准输入流并包装为缓冲流
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DatagramPacket dp = new DatagramPacket(b, 0, b.length);
//首先接收一次发送方发送的消息
ds.receive(dp);
while(dp.getLength() > 0){
msg = new String(dp.getData(),0,dp.getLength());
System.out.println(dp.getAddress().getHostAddress()+":"+msg);
//发送消息
msg = br.readLine();
b = msg.getBytes();
dp = new DatagramPacket(b, 0, b.length, InetAddress.getByName(ip), 8048);
ds.send(dp);
String s = sdf.format(new Date())+"我";
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file,true));
String note = s+msg;
bos.write(note.getBytes(),0,note.getBytes().length);
bos.write(("\r\n").getBytes());
bos.flush();
//接收消息
ds.receive(dp);
}
}
}