Java 用Socket 编写BS服务器
用Socket编写服务器
第一步 将HTML的网页放到项目下 列如
接下来用Socket 编写代码
public class BSsocket {
public static void main(String[] args) throws IOException {
//定义服务器端的Socket
ServerSocket serverSocket = new ServerSocket(8888);
//开启多线程
ExecutorService es = Executors.newFixedThreadPool(3);
while(true){
es.execute(()->{
System.out.println("----------------------------------");
//接受浏览器端的Socket
Socket accept = null;
BufferedReader br=null;
BufferedInputStream bis=null;
OutputStream outputStream=null;
try {
accept = serverSocket.accept();
//创建读取本地文件的流
br = new BufferedReader(new InputStreamReader(accept.getInputStream()));
byte[] bytes=new byte[1024];
//读取一行
String s = br.readLine();
//切割出文件的路径
String[] arr = s.split(" ");
//获取HTML 文件的路径
String htmlpath =arr[1].substring(1);
//读取本地文件
bis = new BufferedInputStream(new FileInputStream(htmlpath));
int temp=0;
//获取 Socket 输出流
outputStream = accept.getOutputStream();
//网络协议的固定格式
outputStream.write("HTTP/1.1 200 OK \r\n".getBytes());
outputStream.write("Content-Type:text/html\r\n".getBytes());
outputStream.write("\r\n".getBytes());
while ((temp=bis.read(bytes))!=-1){
//输出 文件
outputStream.write(bytes,0,temp);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭流
try {
if (bis!=null){
bis.close();
}
if (outputStream!=null){
outputStream.close();
}
if (accept!=null){
accept.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
}
写完之后打开浏览器 开启编写的服务器,输入本地网址和项目名
,回车
Socket 读取到的字符串
按空格将项目路径切割出来
字符串用subString 将/ 取掉 得到完全的项目路径
将HTML 文件通过流的形式传会 客户端就完成了