package socket;
import java.io.*;
import java.net.*;
public class DictClient {
private static final String SERVER = "dict.org";// 要连接到的主机名
private static final int PORT = 2628;// 端口
private static final int TIMEOUT = 15000;// 超时
// 在网络上翻译输入的英文单词
private static void define(String word, BufferedWriter writer, BufferedReader reader)
throws IOException, UnsupportedEncodingException{
writer.write("DEFINE fd-eng-lat " + word + "\r\n");
writer.flush();
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
if (line.startsWith("250")) {
return;
}else if (line.startsWith("552")) {
System.out.println("No definition found for" + word);
return;
}else if (line.matches("\\d\\d\\d .*")) {
continue;
}else if (line.trim().equals(".")) {
continue;
}else {
System.out.println(line);
}
}
}
public static void main(String[] args) {
try (Socket socket = new Socket(SERVER, PORT);
OutputStream out = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(out, "UTF-8"));
InputStream in = socket.getInputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in, "UTF-8"))) {
// 设置超时
socket.setSoTimeout(TIMEOUT);
for (String word : args){
define(word, writer, reader);
}
writer.write("quit\r\n");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器把单词翻译为拉丁文: