20.第一个Netcat的实现

https://github.com/chenshuo/recipes/blob/master/tpc/bin/netcat.cc

准确说不是每个连接对应一个线程,每个连接对应两个线程,每个线程只管半个连接,管理其中一个方向,收/发,读或者写。

go语言中线程代价低,go routine,channel,select

线程模仿go routine,阻塞队列可以模仿channel

主线程读stdin写socket,另一个线程读socket写stdout

两个线程要么阻塞在read/write上

问题:如何通知另一个线程退出?

进程退出有两个条件,1、读stdin返回0,break 2,读socket返回0,break

阻塞IO有节流限速功能

好的,您可以参考以下步骤: 1. 在虚拟机上安装Docker,安装方法可以参考Docker官方文档。 2. 创建三个Docker容器,每个容器运行不同的操作系统,例如Ubuntu、CentOS和Debian。可以使用以下命令创建容器: ``` docker run -it --name container_name ubuntu:latest docker run -it --name container_name centos:latest docker run -it --name container_name debian:latest ``` 3. 在每个容器内安装所需的软件和工具,例如SSH、curl等。可以使用以下命令安装: ``` apt-get install ssh curl yum install ssh curl ``` 4. 在每个容器内配置SSH,确保容器之间可以进行SSH连接。可以参考SSH官方文档进行配置。 5. 在每个容器内安装netcat工具,用于容器之间的信息交互。可以使用以下命令安装: ``` apt-get install netcat yum install netcat ``` 6. 在第一个容器中监听一个端口,例如8080端口,等待其他容器连接。可以使用以下命令: ``` nc -l 8080 ``` 7. 在第二个容器中连接第一个容器的8080端口,可以使用以下命令: ``` nc ip_address_of_first_container 8080 ``` 8. 在第三个容器中同样连接第一个容器的8080端口,可以使用以下命令: ``` nc ip_address_of_first_container 8080 ``` 9. 在第二个容器中输入信息,该信息将被发送到第一个容器中,可以在第一个容器中看到。在第三个容器中同样输入信息,该信息也将被发送到第一个容器中。 10. 容器之间的信息交互实现了,您可以进一步探索Docker的更多功能和用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值