java 线程池socket实现简单http服务器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java 线程池socket实现简单http服务器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1624字,纯文字阅读大概需要3分钟。
内容图文
---恢复内容开始---
要点:
1.只需回应Get请求,将本地的lena.jpg返回给客户端
2.使用最基本的socket编程
3.使用线程池进行线程管理
4.将lena.jpg读入内存中,减少IO次数
5.MyHttpServer作为服务器类,ServerThread作为服务处理线程类
1.加入线程池
ExecutorService pool = Executors.newFixedThreadPool(MaxClientNums);
2.有客户访问则开启服务线程并将其加入线程池
while(true){ try { Socket client=server.accept(); if(client.isConnected()){ pool.submit(new ServerThread(client)); //利用subit加入线程池 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
3.模拟Http回应返回给客户端
OutputStream out=client.getOutputStream(); BufferedWriter bf=new BufferedWriter(new OutputStreamWriter(out,"UTF-8")); String headString="HTTP/1.1 200 OK\r\n"; String serverString="Connection: Keep-Alive\r\n"; String typeString="Content-Type: image/png\r\n"; String lenString="Content-Length:"+MyHttpServer.len+" \r\n"; String endString="\r\n"; bf.write(headString); bf.write(serverString); bf.write(typeString); bf.write(lenString); bf.write(endString); bf.flush(); //注意flush
4.将图片写入缓存
设置静态变量
static File file=new File("F:\\java\\code\\MyHttpServer\\lena.jpg"); static ByteArrayOutputStream bout; staticbyte[]b; staticint len;
将图片写入byte[]b中存储
bin=new BufferedInputStream(new FileInputStream(file)); //将lena.jpg写入缓存 len=bin.available(); bout=new ByteArrayOutputStream(); int length; byte temp[]=newbyte[1024]; while((length=bin.read(temp))!=-1){ bout.write(temp, 0, length); } b=newbyte[len]; b=bout.toByteArray();
5.将图片返回给客户端
out.write(MyHttpServer.b); out.flush(); out.close(); MyHttpServer.bin.close();
源码: http://pan.baidu.com/s/1o8wO70Y
(应付作业写的代码。。。。)
---恢复内容结束---
原文:http://www.cnblogs.com/ming-szu/p/6784682.html
内容总结
以上是互联网集市为您收集整理的java 线程池socket实现简单http服务器全部内容,希望文章能够帮你解决java 线程池socket实现简单http服务器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。