//一个监听端口并提供HTML文档的程序.
import java.io.*;
import java.net.*;
<wbr><br> class SimpleWebServer {<br><wbr>public static void main(String args[]) {<br><wbr><wbr>ServerSocket serverSocket = null;<br><wbr><wbr>Socket clientSocket = null;<br><wbr><wbr>int connects = 0;<br><wbr><wbr>try {<br><wbr><wbr><wbr>// 建立一个服务器套接字<br><wbr><wbr><wbr>serverSocket = new ServerSocket(8089, 5);//服务器要监听的端口,同时接受5个请求,每次处理一次<br><wbr><wbr><wbr>while (connects < 5) {<br><wbr><wbr><wbr><wbr>// 等待连接<br><wbr><wbr><wbr><wbr>clientSocket = serverSocket.accept();//在队列中的连接取出来<br><wbr><wbr><wbr><wbr>//服务连接<br><wbr><wbr><wbr><wbr>ServiceClient(clientSocket);<br><wbr><wbr><wbr><wbr>connects++;<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr>serverSocket.close();<br><wbr><wbr>}catch (IOException ioe) {<br><wbr><wbr><wbr>System.out.println("Error in SimpleWebServer: " + ioe);<br><wbr><wbr>}<br><wbr>}<br><wbr>public static void ServiceClient(Socket client) throws IOException {<br><wbr><wbr>DataInputStream inbound = null;<br><wbr><wbr>DataOutputStream outbound = null;<br><wbr><wbr>try {<br><wbr><wbr><wbr>// 得到IO流<br><wbr><wbr><wbr>inbound = new DataInputStream( client.getInputStream());<br><wbr><wbr><wbr>outbound = new DataOutputStream( client.getOutputStream());<br><wbr><wbr><wbr>//格式化输出(回应头和很少的HTML文档)<br><wbr><wbr><wbr>StringBuffer buffer = new StringBuffer();<br><wbr><wbr><wbr>buffer.append("Server Documents");<br><wbr><wbr><wbr>String inputLine;<br><wbr><wbr><wbr>while ((inputLine = inbound.readLine()) != null){<br><wbr><wbr><wbr><wbr>//如果到了HTTP请求的尾部,就发送回应<br><wbr><wbr><wbr><wbr>if ( inputLine.equals("") ) {<br><wbr><wbr><wbr><wbr><wbr>outbound.writeBytes(buffer.toString());<br><wbr><wbr><wbr><wbr><wbr>break;<br><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr>}<br><wbr><wbr>}catch (IOException ioe) {<br><wbr><wbr><wbr>System.out.println("Error in SimpleWebServer: " + ioe);<br><wbr><wbr>}finally {<br><wbr><wbr><wbr>//关闭输入输出流和套接字<br><wbr><wbr><wbr>System.out.println("Cleaning up connection: " + client);<br><wbr><wbr><wbr>outbound.close();<br><wbr><wbr><wbr>inbound.close();<br><wbr><wbr><wbr>client.close();<br><wbr><wbr><wbr>client.close();<br><wbr><wbr>}<br><wbr>}<br> }<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
()建立一个服务器套接字并开始监听
()使用accept()方法取得新的连接
()建立输入和输出流
()在已有的协议上产生会话
()关闭客户端流和新建的连接套接字
()回到第二步或者第七步
()关闭服务套接字
服务器本身不可能建立对话,服务器端套接字会使用accept()方法来产生一个新的套接字。