java实现模拟写入交换分区_Java基础教程——模拟B/S结构的服务器

浏览器发送请求,用Java模拟写个简单的服务器,浏览器可以收到响应。

执行下列代码(设置static final int TEST = 1),

使用浏览器访问:http://127.0.0.1:8888/tigerlion/index.html

服务器会打印如下代码,这就是浏览器请求的内容:

GET /tigerlion/index.html HTTP/1.1

Accept: text/html, application/xhtml+xml, image/jxr, /

Accept-Language: zh-CN

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: 127.0.0.1:8888

Connection: Keep-Alive

第一句反应了请求访问的资源信息,找到响应文件,返回给请求放即可(设置static final int TEST = 0)。

import java.net.*;

import java.io.*;

public class SocketBS {

// 使用IE访问:http://127.0.0.1:8888/tigerlion/index.html

static final int TEST = 1;// 1:输出请求内容/其它:接受请求并响应

public static void main(String[] args) {

try {

ServerSocket sSocket = new ServerSocket(8888);

while (true) {

System.out.println("accept:");

Socket s = sSocket.accept();

InputStream ips = s.getInputStream();

if (TEST == 1) {

// 测试请求内容

byte[] b = new byte[1024];

ips.read(b);

System.out.println(new String(b));

} else {

// 使用缓冲流,读取一行,并进行解析

BufferedReader br = new BufferedReader(new InputStreamReader(ips));

// |--获取首行

String firstLine = br.readLine();

// |--按空格分割

String[] request = firstLine.split(" ");

// |--0是GET,1是路径

String requestPage = request[1];

System.out.println("用户请求的资源是:" + requestPage);

// 根据用户请求的资源,找到服务器上的文件,发送给用户

OutputStream os = s.getOutputStream();

// HTML协议响应头(固定写法)

os.write("HTTP/1.1 200 OK\r\n".getBytes());

os.write("Content-TYpe:text/html\r\n".getBytes());

os.write("\r\n".getBytes());

// 写网页(应该是从服务器上读文件并写入,此处简化)

os.write("Story of Computer"

.getBytes());

os.close();

br.close();

}

ips.close();

s.close();

}

// sSocket.close();

} catch (Exception e) {

e.printStackTrace();

} finally {

System.out.println("服务器端,OVER");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值