HTTPListener响应 - 如何定义数据包边界

时间:2014-04-25 14:31:39

标签: multipart httplistener

我正在使用HTTPListener类来实现基本的Web服务器。我的回答使用Content-Type of“multipart / x-mixed-replace”来返回JPEG图像流。我能够正确构建我的响应,但是由于IP数据包边界上的响应被破坏的方式,我的Web客户端无法正确解释响应。

使用python中实现的单独服务器,我能够生成一个好的工作案例。对客户端的HTTP GET请求的响应如下所示:

packet 1:
HTTP/1.1 200 OK

packet 2:
Server: (myServer)
Date: (the date)
Connection: close
(other header info)
Content-Type: multipart/x-mixed-replace; boundary=myboundary

packet 3:
--myboundary
Content-Length: 1042
Content-Type: image/jpeg

(jpeg data)

在失败的情况下,使用HTTPListener,一切都在一个数据包中发送

packet 1:
HTTP/1.1 200 OK
Server: (myServer)
Date: (the date)
Connection: close
(other header info)
Content-Type: multipart/x-mixed-replace; boundary=myboundary

--myboundary
Content-Length: 1042
Content-Type: image/jpeg

(jpeg data)

所以我的问题是,如何操纵HTTPListenerResponse的OutputStream来强制数据包边界?我希望能够指定一些数据,手动告诉OutputStream推出数据包,然后指定更多数据并推出另一个数据包。 HTTPListener是否提供此级别的控制,还是需要使用TCPListener?我找不到解决办法;请帮忙!

1 个答案:

答案 0 :(得分:0)

如果您的客户端由于IP数据包边界而无法工作,则会严重损坏。修复客户端,不要在没有问题的地方添加拐杖。 HTTP是通过TCP定义的,TCP是字节流协议。期。任何正确编写的TCP 程序,,更不用说HTTP客户端,并不关心数据包边界的位置。如果你的客户以这种方式行为不端,那么它也会以其他方式行为不端。解决它。