muduo网络库项目测试及报错解决

180 阅读1分钟

一、 编译运行

1. 编译脚本autobuild.h

autobuild.h

#!/bin/bash

set -e

if [ ! -d `pwd`/build ]; then
    mkdir `pwd`/build
fi

rm -rf `pwd`/build/*

cd `pwd`/build &&
    cmake .. &&
    make

#回到根目录
cd ..

if [ ! -d /usr/include/mymuduo ]; then
    mkdir /usr/include/mymuduo
fi

for header in `ls *.h`
do
    cp $header /usr/include/mymuduo
done

cp `pwd`/lib/libmymuduo.so /usr/lib

ldconfig

sudo ./audobuild.h

2. 运行testnode下的Makefile

Makefile

testserver :
	g++ -o testserver testserver.cc -lmymuduo -lpthread -g
clean :
	rm -f testserver

cd testnode

make

二、报错处理

报错一

image.png 问题分析:poller没有析构函数

poller.cc里加Poller::~Poller() = default;

报错二

image.png

分析

  • accept参数不合法
  • 对返回的connfd没有设置非阻塞,每一个loop采用的都是poller + non-blocking io,但是我们的代码没有设置

image.png

image.png

修改Socket.cc:

image.png

我们写的这个网络库和muduo库本身差别还是挺大的,核心的网络设计模型没有变,最大的好处是脱离了boost库,把所有依赖boost库的全部切换成c++ 11,所以我们写的这个网络库要使用只需要执行编译脚本然后安装把相应的头文件和so库装到系统目录里,就可以直接使用,简单方便。