首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP服务器问题

HTTP服务器问题
EN

Stack Overflow用户
提问于 2016-08-06 04:51:31
回答 2查看 57关注 0票数 0

嗨,伙计们,我有一个非常基本的http服务器,大约在30分钟内编写了一个任务,并遇到了一个非常奇怪的问题。我们被指定只使用BufferedOutputStream而不是StreamWriter,因为使用PrintWriters显然有问题,因为它们在不同的平台上执行不同的操作。我很困惑,因为我有我的方法.

代码语言:javascript
复制
private void println(BufferedOutputStream bos, String s) throws IOException {
    String toPrint = s + "\r\n";
    byte[] array = toPrint.getBytes();
    for (int i = 0; i < array.length; i++) {
        bos.write(array[i]);
    }
    return;
}

我很困惑当我使用

代码语言:javascript
复制
println(outStream,"HTTP/1.1 200 OK");
println(outStream,"");
println(outStream,"Hello World");

网页上说我没有发送任何数据但是用..。

代码语言:javascript
复制
writer.println("HTTP/1.1 200 OK");
writer.println("");
writer.println("Hello World");

一切看起来都很完美..。我尝试过一些事情,比如冲洗outStstream,但是我不明白为什么它不能工作

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-06 04:57:35

写完所有的数据后,你是否脸红并关闭了BufferedOutputStream?

票数 1
EN

Stack Overflow用户

发布于 2016-08-06 05:17:08

代码语言:javascript
复制
private void println(BufferedOutputStream bos, String s) throws IOException {
    String toPrint = s + "\r\n";
    byte[] array = toPrint.getBytes();
    for (int i = 0; i < array.length; i++) {
        bos.write(array[i]);
    }
    return;
}

你不需要这些。事实上你不需要任何东西。只需直接从调用它的地方调用bos.write((s+"\r\n").getBytes()),然后在编写了需要编写的所有内容时刷新它。

注意,在HTTP1.1中,您必须关闭BufferedOutputStream或提供一个Content-length头(或者使用块传输编码)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38800667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档