![]()
public static void main(String[] args) {
// 创建ServerSocket对象,开启8088端口监听发送过来的请求
// IP是电脑在网络上的唯一标识,端口号是程序在电脑中的唯一标识
InputStream is = null;
OutputStream os = null;
FileInputStream fis = null;
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("服务器启动");
// 让服务器循环监听请求(服务器不能停止运行)
while (true) {
// 接收请求过来的数据
Socket s = ss.accept();
System.out.println("收到请求");
// 获取输入流
is = s.getInputStream();
// 构建一个byte数组,用来装取输入流里面读取出来的数据
byte[] data = new byte[1024];
// 从输入流里面读取数据放入data数组里面
is.read(data);
// 把byte【】数组中的二进制数据转化成String
String httpInfo = new String(data);
System.out.println(httpInfo);
// 获取输出流(响应)
os = s.getOutputStream();
// //响应普通文本
// os.write("<h1>请求处理完毕,响应数据给浏览器</h1>".getBytes());
// os.flush();
// 响应二进制数据——图片、视频、音频
// File img=new File("img/1.jpg");
// FileInputStream ins=new FileInputStream(img);
fis = new FileInputStream("img/1.jpg");
byte[] imgStr = new byte[1024];
int len = 0;
while ((len = fis.read(imgStr)) != -1) {
os.write(imgStr, 0, len);
os.flush();// 手工刷新
}
if (fis != null) {
fis.close();
}
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
System.out.println("完成响应");
}
} catch (IOException e) {
e.printStackTrace();
}
}