
Linux网络编程
文章平均质量分 97
大耳朵土土垚
越努力,越幸运。
展开
-
【项目】基于Boost自主实现搜索引擎
因为我们使用的jieba库分词可能和我们预想的不太一样,所以weight值可能有些偏差,但是影响不大,此外我们在查找正文中词的数量时包括了标题的词,所以有可能weight会比实际的大一点,可以设置weight-1,更准确一点,但我们也不准备输出weight在网页上,所以就不做处理了。当我们在搜索时,不同的词可能对应一个文档,这样就有多篇相同的文档被索引,是不必要的,所以我们需要在搜索时去重;构建倒排索引需要将词与文档对应,所以我们需要将文档的内容进行分词,可以借助第三方库jieba库来分词。原创 2025-02-25 16:26:54 · 1096 阅读 · 6 评论 -
【Linux】应用层自定义协议与序列化
当使用 Jsoncpp 库进行 JSON 的序列化和反序列化时,确实存在不同的做法和工具类可供选择。反序列化指的是将序列化后的数据重新转换为原来的数据结构或对象。只要保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 就是 ok 的.。连接既有发送缓冲区,又有接受缓冲区,所以,在内核中,可以在发消息的同时,也可以收消息,即全双工;应答序列和请求序列尽管使用的方法类似,但是因为序列中包含的内容不一样,所以还是需要使用两个类。服务器向客户端发送的信息也该和上述一致,只不过json序列中包含的应该是。原创 2025-02-15 19:49:19 · 954 阅读 · 1 评论 -
【Linux】Socket编程—TCP
其次父进程需要等待回收子进程,此时父进程会阻塞直到子进程完成通信,这样和之前单进程通信效果一样,所以为了不让父进程阻塞,子进程需要再创建子进程,用它来完成通信,此时父进程就可以直接回收子进程,孙子进程就成为孤儿进程进行通信,结束后由操作系统回收。介绍:服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接;对于多进程,首先每个进程都有自己的文件描述符表,所以父子进程都需要关闭自己不需要的文件描述符;引入之前实现的线程池,并使用单例模式。原创 2025-02-14 19:45:42 · 948 阅读 · 1 评论 -
【Linux】Socket编程—UDP
例如,如果服务器有多个网卡(每个网卡上有不同的 IP 地址),使用 INADDR_ANY 可以省去确定数据是从服务器上具体哪个网卡/IP 地址上面获取的。在运行客户端代码之前,我们可以创建一个管道将其重定向到cerro,然后运行客户端,这样服务器群发收到的消息就会写入到管道中。同样,客户端要进行网络通信也需要创建套接字,但是不需要bind信息进入内核,因为在接收到网络信息时会自动进行bind。因为在进行网络通信时不可避免的需要频繁使用到相关信息,所以我们可以考虑将它们封装成为一个类,设置一些常用的方法。原创 2025-02-09 22:16:09 · 1353 阅读 · 1 评论