第 页
专业 软件工程 班级__2____ 学号_123012007038___ 姓名
实验日期: 年 月 日 报告退发 (订正 、 重做)
课程 实验名称 Java Socket编程
一、实验目的
1. 掌握Java Socket编程;
2. 了解HTTP协议;
二、实验环境
Eclipse JDK
三、实验内容、步骤和结果分析
1. 实验内容:
实现一个简单的服务器,该服务器监听80端口,每当有来自浏览器端的连接请求时则生成一个新的线程来把响应报文发给浏览器。在该服务器的响应报文中,只要把当前时间发给浏览器即可。
public class ServerThread extends Thread{
//可能要用到的几个实例变量
private static int timeout = 85; //默认延时85毫秒
private static ServerSocket serverSocket;
private static boolean stopped = false;
private static int port=80; //端口
Socket socket;
public void run(){
try {
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
int cur;
try {
while((cur = in.read()) != -1){
System.out.write(cur);
}
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
PrintStream out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()));
out.println("HTTP/1.1 200 OK\\n\\n"+new Date()); //发送HTTP响应报文
out.flush();
out.close();
in.close();
//socket.clone();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String []args) throws IOException
{
// 服务器监听
serverSocket = new ServerSocket(port);
while (!stopped) {
try {
Socket socket = serverSocket.accept(); //监听
socket.setSoTimeout(timeout);
// //启动一个自定义的线程ServerThread来处理当前请求
new ServerThread(socket).start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public ServerThread(Socket socket){
this.socket = socket;
}
}
四、讨论
(说明实验过程中遇到的问题及解决办法;未解决/需进一步研讨的问题或建议新实验方法等)
努力备战最终的考试