- 博客(5)
- 收藏
- 关注
原创 实现tiny-muduo(部分完成)
值得注意的是在toIpPort函数中,strlen不可以替换为sizeof,因为已经提前将buff全部置为0,sizeof默认将所有0即空字符也进行计数。这个类实现了将用户传来的ip和port封装到结构体sockaddr_in中,并可以调用类方法来return相关的ip或port。这个noncopyable类将自身的拷贝构造和重载赋值操作给delete了。所以其它类在将此类作为基类时也无法进行拷贝构造和重载赋值操作。我们在阅读muduo库源码时可以看到。可以在main函数中测试代码为。
2023-11-11 23:14:08
26
1
原创 改进后的简单接受请求并发送html的http服务器
每一个工作都代表着一个客户对应的文件描述符,具体关注work()函数,work()函数中第一个循环用于ET模式下的epoll监听(必须循环读取客户端发来的信息,epoll不会重复提醒是否有数据可以读取);第二个循环用于启动状态机,最后会返回分析客户端请求的结果,将结果进行匹配,如果是GET请求就发送给客户端一个html文本。线程池实现思想:(模版类可以放入任意种类工作类型),在构造函数中创建8个子线程将它们全部阻塞等待信号量的释放,一旦有工作被压入工作队列就会有线程通过锁来占用工作队列并取出工作进行作业。
2023-11-07 15:58:06
20
原创 解析请求的http服务器
可以看到一个网页向127.0.0.1主机发起请求,终端上显示网页发送完第一个GET请求后收到服务器发送的一个html文本并显示在网页上,紧接着网页又向服务器端发送第二个请求(暂时不清楚第二个请求的含义)实现功能:可以循环监听多个网页发送来的请求并解析。基于上一个博客的头文件。
2023-11-06 16:16:01
19
1
原创 简单接受信息并发送html文本的http服务器
主函数采用reactor模式网页发送GET请求后,主函数将basetask放入任务队列中并释放信号量,线程池中线程等待信号量的释放,其中之一的线程争抢到锁后进行工作。在firefox中输入127.0.0.1后可以看到,终端收到了两个GET请求并将内容打印了出来,然后发送了一个简单的html文本。先定义一个锁类的头文件,其中包含互斥锁和信号量。(没搞懂网页发送的第二个GET请求是什么意思)一个包含要处理的文件描述符类的头文件。存放epollfd类的头文件。
2023-11-06 13:40:56
34
原创 第一篇博客-从头设计并实现webserver
先实现一个简单的echo服务器也就是服务器里的“Hello world”,然后再添加epoll IO多路复用,编写多个头文件,定义多个类来实现信息的不断接受和打印,再实现简单的http服务器接受网页发来的GET请求并传递一个简单的html文本,然后再实现分析请求。开启虚拟机,打开终端,生成可执行文件s,再开启另一个终端,使用nc命令连接本机端口,发送“hello world”,可以看到在另一个终端printf客户端发来的信息。下面是一个简单的echo服务器。欢迎各路大佬指正建议!
2023-11-06 10:55:46
60
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人