📄 serverdemo.java
字号:
// 例8.4.3 ServerDemo.java
import java.io.*;
import java.net.*;
import java.util.*;
class ServerDemo
{
public static void main (String[] args) throws IOException
{
System.out.println ("Server starting...\n");
// 创建一个ServerSocket,监听来自端口8000的连接请求
ServerSocket server = new ServerSocket(8000);
while (true)
{
// 监听来自客户端程序的请求,当收到请求时创建一个响应该请求的Socket
Socket s = server.accept ();
System.out.println ("Accepting Connection...\n");
// 新建一个线程来处理该连接
new ServerThread(s).start ();
}
}
}
class ServerThread extends Thread // 定义一个线程类
{
private Socket s;
ServerThread (Socket s)
{
this.s = s;
}
public void run ()
{
BufferedReader br = null;
PrintWriter pw = null;
try
{
//创建一个字符输入流用来连接到Socket的字节输入流上,采用平台缺省的字符集
InputStreamReader isr;
isr = new InputStreamReader(s.getInputStream ());
// 创建一个BufferedReader,这样可以支持readLine()操作
br = new BufferedReader (isr);
// 创建一个PrintWriter连接到Socket的字节输出流上
pw = new PrintWriter(s.getOutputStream (), true);
// 创建一个Calendar对象,使其包含当前日期和时间信息
Calendar c = Calendar.getInstance();
// 由于客户端可能会发送多个请求,因此使用循环来进行监听,BYE表示结束
do
{
// 获得客户端程序的下一个命令
String cmd = br.readLine ();
cmd = cmd.toUpperCase();
if (cmd.startsWith("TIME")||cmd.startsWith("DATE"))
pw.println(c.getTime().toString());
else if (cmd.startsWith("BYE"))
break;
else
{
System.out.println(cmd);
}
}while (true);
}catch (IOException e){
System.out.println (e.toString ());
}finally{
System.out.println ("Closing Connection...");
try
{
if (br != null) br.close();
if (pw != null) pw.close();
if (s != null) s.close();
}catch (IOException e){ }
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -