- 博客(10)
- 收藏
- 关注
原创 c++ fstream库操作文件,关于std::ios::out、std::ios::in、std::ios::trunc理解
最近学习c++ 文件操作,使用fstream库操作文件时,因为打开模式不同,产生的结果很奇怪,比如如下几种场景问题原因在网上搜了很久也没找到,最后根据结果自己得出了一个结论。如有问题,希望大佬们指正。
2024-09-01 17:18:17 419
原创 WEB服务编程——基于GO语言标准库实现简易贴吧
本项目实现了一个简易的贴吧系统,主要分为两部分:1. 参照gin框架模式,使用标准库搭建了一个简易的开发框架gow。2. 使用gow框架和mysql数据库实现贴吧系统。待添加功能:1. session过期删除。2. lru缓存来缓存热点帖子。
2023-10-31 14:57:14 200 1
原创 TCP/IP网络编程(8)——聊天室(epoll + 线程池)
在前文多线程的实现方法中,每连接一个客户端则开辟一个线程与之交互,这种情况下,当客户端连接许多时,就需要开辟非常多的线程,这是不现实的。本文我采用epoll和多线程综合的方式来实现服务端,同时添加了一些功能,并用面向对象的思想优化了代码结构。使用epoll监听文件描述符发生事件,只有当某个事件发生时,才由线程池执行代码。这样在开辟的线程个数很少的情况下依然能有很高的效率。实现功能:用户上线下线、查询在线用户、修改用户名、公聊(所有用户可见)、私聊(单一用户可见)。
2023-10-09 21:19:46 470 1
原创 TCP/IP网络编程(7)——多线程的实现及简易聊天室编写
在前面的文章中分别使用了多进程和I/O复用的方式实现了简易聊天室功能,可以明显看到这两种方法的缺点:多进程的开销大、I/O复用并不是真正意义的并发。在本文中我将介绍第三种方法——多线程。多个线程会共用进程的资源,线程只会隔离栈区域。多线程的优点很多:开销小、操作较容易、线程间通信简单,能够构建高并发的服务器。在下面我将介绍如何使用多线程以及如何实现线程同步。在编译源代码时要注意两点:1. 需要添加“-lpthread”选项声明需要连接线程库。
2023-05-13 13:56:00 1458
原创 TCP/IP网络编程(6)——基于I/O复用(epoll)编写简易聊天室
TCP/IP网络编程(5)——基于I/O复用(select)和多进程编写简易聊天室相较于select函数,epoll有以下两个优点:第一,不需要对所有文件描述符进行遍历来找出发生事件的文件描述符。epoll函数会把发生事件的文件描述符单独保存在一个空间(数组)中;第二,epoll调用前不需要传递监视对象信息,而是直接由操作系统保存(就是select函数的fd_set参数,因为select调用完,fd_set会变化,所以每次调用前都要传递)。由于是向操作系统传递监视对象信息,所以这个开销很大。
2023-05-12 14:38:32 299
原创 TCP/IP网络编程(5)——基于I/O复用(select)和多进程编写简易聊天室
经过这几天的学习,我了解了套接字的基本使用方法,并且了解了实现服务器并发的两种方式——多进程和I/O复用。在这里我打算编写一个简易的聊天室程序,作为这几天学习的练习。因为创建进程的消耗比较大,所以服务端我采用I/O复用技术。因为I/O复用并不是真正意义上的并发,所以服务端没有太复杂的功能,我设计了四种功能:用户登录,向用户发送消息,查看在线的用户,用户退出。对于客户端,我考虑到,在发送消息的同时可能会接收到其他用户发送来的消息,所以客户端采用双进程的方式,父进程用于发数据,子进程用于接收数据。
2023-05-06 21:52:04 186
原创 TCP/IP网络编程(4)——基于I/O复用(select)的服务端简单实现
上一篇文章记录了使用多进程的方法编写服务器,本文记录另一种方法,使用I/O复用技术实现服务端。I/O复用技术的关键在于select函数在前一篇文章中,多进程服务器的实现逻辑是:当有一个请求连接发送到服务器时,服务器创建一个子进程,在这个子进程中实现交互,但是创建进程的开销往往很大。I/O复用只通过一个进程就能与多个客户端交互。在这个进程中,程序同时监视多个套接字的文件描述符,当有输入输出等事件发生时,文件描述符发生变化,程序就会遍历所有监视的文件描述符找到变化的那几个,然后进行相应的事件处理。
2023-05-06 14:20:34 130 1
原创 TCP/IP网络编程(3)——多进程服务器实现(fork函数复制socket问题)
本文记录实现多进程服务器的方法。另外,重点记录一下关于我遇到的fork函数复制socket时产生的问题和原因,以及如何解决。
2023-05-05 16:40:54 996
原创 TCP/IP网络编程(2)——基于UDP的服务端和客户端的简单实现
本文主要介绍编写UDP服务端和客户端的一些关键函数,相比于TCP,UDP无需实现流控制,所以两端传输数据前无需建立连接。端点仅仅需要一个套接字就能与其他各个端点通信,而TCP每一个连接都需要一对套接字。UDP的客户端和服务端并没有太大的差别,所以本文不做细分。
2023-05-03 15:09:52 320 1
原创 TCP/IP网络编程(1)——基于TCP的服务端和客户端的简单实现
本系列是阅读尹圣雨所著TCP/IP网络编程一书的学习笔记,我将记录一些关键知识和遇到的问题,在最后能够自己搭建一个简易的服务器。本文主要介绍TCP服务端和客户端的一些关键函数。
2023-05-02 18:19:20 3566 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人