梁越

网络编程学习笔记2-ttcp

0 人看过

使用虚拟机编译muduo,并尝试使用两个虚拟机建立tcp,视频p6笔记

本笔记参考的视频链接:https://www.bilibili.com/video/BV1Ht411p7wx?p=6
库链接:https://github.com/chenshuo/muduo

1生成和编译

1.1下载源代码到你喜欢的文件夹

git clone https://github.com/chenshuo/muduo.git

1.2编译

根据官方文档,运行

 ./build.sh

要是你的库完整,应该会顺利编译通过

假如缺失一些库,你就先试试yum install 库名

我这里提示安装的protobuf版本太新了,有些函数名找不到,毕竟这个muduo是2014年写的了,所以你极有可能也会遇到这个问题

1.3重新下载旧版本protobuf,生成并编译

参考链接

既然2014年,咱们就下一个2014年的protobuf,我下了2.6.0版本的,链接或者你自己选一个

上传到服务器

tar zvxf protobuf-2.6.0.tar.gz
cd protobuf-2.6.0.tar.gz

./configure –prefix=/usr/local/ #注意一定要指定一个新文件夹,不然到时候卸载就很难受,养成好习惯

sudo make  #要编译很久
sudo make check
sudo make install

1.4运行

编译完成后或生成一个build文件夹,运行/build/bin里对应的文件就可以了,例如:

./ttcp_muduo -r #服务端

1.5总结

我算是个linux小白吧,生成、安装和编译这些操作不是很熟悉,感觉服务器最复杂的就是一开始的环境设置了,如果能用docker技术来解决一下就好了

2两个独立虚拟机使用ttcp建立连接

2.1克隆虚拟机

将服务端的虚拟机直接克隆,减少配置环境的时间

2.2启动服务端

在bin目录下

while true;do ./ttcp_muduo -r;done

响应如图

2.3启动客户端

./ttcp_muduo -t 192.168.200.133

这里响应失败,还没找到原因

{% asset_img 图2.png 图2.png %}

找到原因了,原来是因为服务端5001端口没开放,我直接关闭防火墙就可以了

systemctl stop firewalld.service(停止防火墙)
systemctl start firewalld.service(打开防火墙)
systemctl disable firewalld.service(关闭开机自启)

然后再运行以上客户端命令,服务端就收到了

这里再记录一些其他常用的防火墙和端口命令

systemctl status firewalld.service(查看防火墙开启还是关闭)
sudo firewall-cmd --list-all(可以查看端口开放情况)

sudo firewall-cmd --add-service=http --permanent (允许http服务)
sudo firewall-cmd --add-port=8080/tcp --permanent(打开8080端口)

sudo firewall-cmd --reload (查看端口开放情况)
sudo firewall-cmd --list-all