服务端
import com.sun.security.ntlm.Client;
import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Server {
public static void main(String[] args) {
try {
//创建一个服务器对象,端口8888
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("启动服务器....");
// Socket s = ss.accept();
// System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");
//
// BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
// //读取客户端发送来的消息
// String mess = br.readLine();
// System.out.println("客户端:"+mess);
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
// bw.write(mess+"\n");
// bw.flush();
// Socket client=null;
// boolean flag=true;
// while (flag){
// System.out.println("服务器已启动等待客服端请求。。。。。");
// client = serverSocket.accept();
// new Thread(new EchoThread(client)).start();
// }
// client.close();;
// serverSocket.close();;
// System.out.println("服务以关闭。");
DatagramSocket server = new DatagramSocket(8888);
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket = new DatagramPacket(recvBuf, recvBuf.length);
while (true) {
server.receive(recvPacket);
String recvStr = new String(recvPacket.getData(), 0,
recvPacket.getLength());
System.out.println("收到:" + recvStr);
if(recvStr.endsWith("q")|| recvStr.endsWith("quit")){
break;
}
}
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class EchoThread implements Runnable {
private Socket client;
public EchoThread(Socket client) {
this.client = client;
}
public void run() {
//run不需要自己去执行,好像是线程器去执行了来着,可以去看api
try {
BufferedReader in = null;
String br = null;
boolean flag = true;
while (flag == true) {
//Java流的操作没意见吧
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
br = in.readLine();
System.out.println("++:" + br);
recordMsg(br);//写入到文件
}
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (Exception e) {
// TODO: handle exception
System.out.println("error");
}
}
public void recordMsg(String br) throws IOException {
File file = new File("test.data");
if (!file.exists()) {
file.createNewFile();
}
FileWriter writer = new FileWriter(file, true);
writer.write(br + "\r\n");
writer.close();
}
}
客户端
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.*;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
//protected static Logger log=Logger.getLogger(Client.class);
public static void main(String[] args) {
try {
DatagramSocket client = new DatagramSocket();
InetAddress addr = InetAddress.getByName("127.0.0.1");
int port = 8888;
byte[] sendBuf;
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输要发送的内容:");
String str = sc.nextLine();
sendBuf = str.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendBuf , sendBuf.length , addr , port );
client.send(sendPacket);
if(str.endsWith("q")|| str.endsWith("quit")){
break;
}
}
client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
结果
参考:https://www.cnblogs.com/zhaohz/p/4946365.html