📄 datagramserverstring.java~4~
字号:
package datagrams;import java.io.*;import java.net.*;import java.util.*;public class DatagramServerString { public static void main(String[] args) throws IOException { new QuoteServerThread("serverThread").start(); }}class QuoteServerThread extends Thread { //创建DatagramSocket类 protected DatagramSocket datagramSocket = null; //创建文件读入类 protected BufferedReader in = null; //标识words文件是否还有语句 protected boolean moreQuotes = true; public QuoteServerThread(String title) throws IOException { super(title); //为DatagramSocket类创建5555端口 datagramSocket = new DatagramSocket(5555); try { //创建文件读入类,读入words.txt文件的内容 in = new BufferedReader(new FileReader("words.txt")); } catch (FileNotFoundException e) { System.err.println("不能打开文件"); } } public void run() { while (moreQuotes) { try { byte[] buf = new byte[200]; //使用byte数组创建数据包 DatagramPacket packet = new DatagramPacket(buf, buf.length); //使用DatagramSocket接口接收客户端的数据包 datagramSocket.receive(packet); //创建dString字符串读取文件的内容 String dString = null; if (in == null) dString = new Date().toString(); else //使用getNextQuote()方法获取文件的内容 dString = getNextQuote(); //将字符串转为Bytes()数组 buf = dString.getBytes(); //根据接收的数据包获取网络地址与端口 InetAddress address = packet.getAddress(); int port = packet.getPort(); //重新创建带有网络地址与端口的数据包 packet = new DatagramPacket(buf, buf.length, address, port); //根据数据包的地址与端口发送数据包 datagramSocket.send(packet); } catch (IOException e) { e.printStackTrace(); //当发生异常时,退出发送信息循环 moreQuotes = false; } } //关闭Datagram接口 datagramSocket.close(); } //读取文件内容的方法 protected String getNextQuote() { String returnValue = null; try { //读入文件内容 if ( (returnValue = in.readLine()) == null) { //如果到了文件的结尾,返回下面的语句 in.close(); //退出发送信息的循环 moreQuotes = false; returnValue = "完成信息发送."; } } catch (IOException e) { //产生异常时,返回这句话 returnValue = "产生发送信息错误."; e.printStackTrace(); } //返回文件的内容 return returnValue; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -