首页 > 编程知识 正文

javaweb项目发布到服务器,小型web服务器

时间:2023-05-06 08:22:49 阅读:47106 作者:673

我试图在c上实现一个简单的http服务器,但遇到了一些小问题。 请多关照

流程:

服务器接收端口-在启动- accept请求后创建线程处理-返回结果

问题:

向客户端发送结果后,close (浏览器页面显示“连接已重置”

如果不关闭,页面将一直加载

思考:

是我返回的http数据不完整还是其他原因?

代码:

char buf[1024];

发送头部

sprintf(buf,' HTTP/1.0 200 OKrn );

send(client_FD,buf,strlen ),0 );

sprintf(buf,' Content-Type: text/html; charset=utf-8rn ';

send(client_FD,buf,strlen ),0 );

sprintf(buf,'rn ';

send(client_FD,buf,strlen ),0 );

//发送内容

sprintf(buf,'

测试'; send(client_FD,buf,strlen ),0 );

sprintf(buf,'

欢迎'; send(client_FD,buf,strlen ),0 );

//关闭连接

关闭(client _ FD;

回答:

因为你的浏览器不知道你的数据是否返回,所以你必须告诉浏览器你要响应的正文长度,并使用HTTP响应标头中的内容长度

Cchar *body='。 请参阅。 //要响应的正文

sprintf(buf,' HTTP/1.0 200 OKrn );

send(client_FD,buf,strlen ),0 );

sprintf(buf,' Content-Type: text/html; charset=utf-8rn ';

send(client_FD,buf,strlen ),0 );

//设置正文长度Content-Length

sprintf(buf,' Content-Length: %drn ',strlen ) body );

send(client_FD,buf,strlen ),0 );

sprintf(buf,'rn ';

send(client_FD,buf,strlen ),0 );

//发送正文

send(client_FD,body,Strlen ),0 );

sprintf(buf,'rn ';

send(client_FD,buf,strlen ),0 );

还有一个方法。 有点麻烦,我脑子里用“Transfer-Encoding:chunked”。 详情请在百度上查看。

回答:

那是因为你没有写头上的内容长度

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。