📄 quoteserverthread.java
字号:
//【代码18-2-1】
// QuoteServerThread.java
import java.io.*;
import java.net.*;
import java.util.*;
public class QuoteServerThread extends Thread
{
private DatagramSocket socket = null;
private DataInputStream in = null;
private boolean moreQuotes = true;
public QuoteServerThread() throws IOException
{
super("QuoteServerThread");
socket = new DatagramSocket(1800);
try
{
in = new DataInputStream(new FileInputStream("one-liners.txt"));
}
catch (FileNotFoundException e)
{
System.err.println("Could not open quote file. Serving time instead.");
}
}
public void run()
{
while (moreQuotes)
{
try
{
byte[] buf = new byte[256];
// receive request
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
// figure out response
String dString = null;
if (in == null)
dString = new Date().toString();
else
dString = getNextQuote();
dString.getBytes(0, dString.length(), buf, 0);
// send the response to the client at "address" and "port"
InetAddress address = packet.getAddress();
int port = packet.getPort();
packet = new DatagramPacket(buf, buf.length, address, port);
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
moreQuotes = false;
}
}
socket.close();
}
private String getNextQuote()
{
String returnValue = null;
try
{
if ((returnValue = in.readLine()) == null)
{
in.close();
moreQuotes = false;
returnValue = "No more quotes. Goodbye.";
}
}
catch (IOException e)
{
returnValue = "IOException occurred in server.";
}
return returnValue;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -