Socket实现简单的GET请求

这篇博客记录了通过Socket实现GET请求的过程,作者在原有web服务器基础上修改,将文件访问参数化。文章提到了在获取文件大小后对文件指针位置的误解导致的错误,并分享了代码实现。此外,作者还遇到了telnet接收信息时出现乱码以及浏览器无法正常打开文件的问题,经过逐步调试,解决了响应报文格式不正确的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继续完成之前的web服务器。
这里主要实现了简单的web服务器的GET请求,返回相应的文件。

主要是在上次的基础上修改以及参考别人的写法,当然中间也遇到了很多的问题。

其实这个程序和上一个程序的不同就是把固定的访问文件参数化了,其实思路非常简单,就是利用字符串作为文件名打开文件。

由于之前实现的时候在获取文件大小时,调用了fseek函数,因此文件指针就指向文件尾,但是我意识上还是以为它仍然指向文件头,导致调了好久的错误(菜啊: ()。

实现的代码为:

#include<cstdio>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/stat.h>
#include"Get_html.h"
using namespace std;

bool is_get_http(char* buff){
   
   	//判断是否为GET请求
	return !strncmp(buff,"GET",3);
}

char* get_file_name(char* buff){
   
   	//从请求中得到文件名
	char* fp=buff+4;
	char* Space=strchr(fp,' ');
	*Space='\0';
	return fp;
}
int get_file_size(char* file_name){
   
   	//得到文件大小	
    FILE *fp=fopen(file_name,"r");
    if(!fp) 
    	return 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值