设为首页 收藏本站
查看: 574|回复: 0

[经验分享] tomcat接收流数据

[复制链接]

尚未签到

发表于 2017-1-24 11:07:04 | 显示全部楼层 |阅读模式
我靠!都好久没写过博客了,不是没有需要记录的,而是太TMD忙啦!!!不过,就算忙也应该记录下重要的东西的,要不就成了瞎忙了,在此,先检讨一下!
    我决定,从今天开始,每天晚上拿出1~2个小时左右的时间来总结、学习、提高!    
    最近客户有个需求,他们的客户端需要用C给Tomcat发送流数据,然后再经过处理后给他返回流数据,这个需求提出后,我首先想到的就是上传和下载的机制,那个应该就是流数据的传输,不过由于以前没有深入接触过上传下载,就是用也是用一些已经封装好的包,按照既定的模式做一些简单的上传下载,对于“底层”的东西不是很了解,或者说是根本不了解,不过好在俺的分析问题解决问题的能力还是不错的(哈,小吹一下),我先从网上找了了一个比较原始的接收上传文件的代码,部署到Tomcat后,正常用IE上传一个文件,在客户端抓报文,看了一下报文的结构,发现流数据是附加到报文体的, 然后就让客户端按照该格式给我发报文,经过反复调试,终于成功了!!!哈
    其实就是将HTTP报文的头里的ContentType设置为multipart/form-data的,然后直接将2进制数据附加在报文体(报文头和报文体是用连续的两个\r\n来分割的)中就OK了,然后通过request.getInputStream()就可以得到数据。
    返回流数据就是用下载的流程,将response.setContentType("application/x-download"),然后直接OutputStream out = response.getOutputStream();out.write(bos.toByteArray()) 就OK了。 下面附上简单的源码:

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream in = request.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BufferedInputStream bis = new BufferedInputStream(in);
readStreamLine(bis, bos);
response.reset();
response.setContentType("application/x-download");
OutputStream out = response.getOutputStream();
out.write(bos.toByteArray());
out.flush();
out.close();
}
private ByteArrayOutputStream readStreamLine(BufferedInputStream in,
ByteArrayOutputStream bos) throws IOException {
int b = in.read();
while (b != -1) {
bos.write(b);
b = in.read();
}
return bos;
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-332905-1-1.html 上篇帖子: tomcat下配置数据源 下篇帖子: Tomcat中文乱码解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表