packagecn.server;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.Date;/** 创建服务器,并启动
* 请求并响应*/
public classServer3 {privateServerSocket server;public static final String CRLF="\r\n";public static final String BLANK=" ";public static voidmain(String[] args) {
Server3 server=newServer3();
server.start();
}//启动方法
public voidstart() {try{
server= new ServerSocket(8870);this.receive();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/** 接收客户端*/
private voidreceive() {try{
Socket client=server.accept();
String msg=null;byte[] data=new byte[20480];int len=client.getInputStream().read(data);//接收客户端的请求信息
String requestInfo=new String(data,0,len).trim();
System.out.println(requestInfo);//响应
StringBuilder responseContext=newStringBuilder();
responseContext.append("\r\n" +
"
\r\n" +"
表单\r\n" +" \r\n" +
"
\r\n" +"
\r\n" +" sun:\r\n" +
" pwd:\r\n" +
" \r\n" +
"
\r\n" +" \r\n" +
"");
StringBuilder response=newStringBuilder();//1)http协议版本、状态代码 、描述
response.append("HTTP/1.1").append(BLANK).append("200").append(BLANK).append("ok").append(CRLF);//2)响应头(response Head)
response.append("sun").append(CRLF);
response.append("Date").append(newDate()).append(CRLF);
response.append("Content-type:text/html;charset=GBK").append(CRLF);//正文的长度 :字节长度
response.append("Content-Length:").append(responseContext.toString().getBytes().length).append(CRLF);//3)正文之前
response.append(CRLF);//4)正文
response.append(responseContext);//输出流 将响应发送出去
BufferedWriter bw=new BufferedWriter(newOutputStreamWriter(client.getOutputStream()));
bw.write(response.toString());
bw.flush();
bw.close();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/** 停止服务器*/
public voidstop() {
}
}