目录
网络工具是在计算机网络中进行网络通信和数据传输的必备工具,其中 nc 和 Netcat 是两个常用的工具。本文将探讨 nc 和 Netcat 的用途、基本使用方法以及在 Linux 系统上的安装步骤。
🐶1. 什么是nc(netcat)?
Netcat(nc)是一个用于网络调试和控制的命令行工具,可以在网络上发送和接收数据。它是一种多功能的工具,可以用于创建各种类型的网络连接,包括TCP和UDP连接。在实时数据处理中,Netcat通常用于创建数据源或数据接收器,以便测试和验证数据流。
🐶2. nc(netcat)的基本使用方法
2.1 🥙使用 nc 进行端口监听
nc -lk 8899
2.2 🥙使用 nc 进行端口扫描
nc -vz example.com 80
2.3 🥙使用 Netcat 进行文件传输
# 在接收端启动监听
nc -l 8899 > received_file.txt
# 在发送端将文件发送到接收端
nc -w 3 <file_path> <receiver_ip> 8899
🐶3. Linux 系统上安装 Netcat
3.1 🥙使用包管理工具安装
- Debian/Ubuntu:
sudo apt-get update
sudo apt-get install netcat
- Red Hat/CentOS:
sudo yum install nc
3.2 🥙从源代码构建和安装
您可以从 Netcat 官方网站 https://github.com/vinsworldcom/netcat/releases 下载源代码,然后按照 README 文件中的说明进行构建和安装。
🐶4. Netcat在实时数据处理中的使用
在实时数据处理中,Netcat(简称nc)是一个常用的工具,可用于创建一个TCP或UDP服务器,以便将数据发送到Apache Flink等流处理框架进行实时处理。下面是使用Netcat和Flink进行实时数据处理的简要讲解:
🥙4.1 安装Netcat
首先确保你的系统中已经安装了Netcat。如果没有安装,可以通过包管理器(如apt、yum等)来安装。
🥙4.2 启动Netcat服务器
使用以下命令在本地启动一个Netcat服务器,监听指定端口(例如8899):
nc -lk 8899
这将在本地启动一个监听端口8899的Netcat服务器,并等待接收数据。
🥙4.3 编写Flink程序
接下来,编写一个Flink程序来连接到Netcat服务器并处理接收到的数据。以下是一个简单的Flink程序示例:
package com.doit.day0221;
import beans.BrandAmount;
import beans.Order;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
/**
* @日期: 2024/2/21
* @Author: Wang NaPao
* @Blog: https://blog.csdn.net/weixin_40968325?spm=1018.2226.3001.5343
* @Tips: 和我一起学习吧
* @Description: 演示 Flink 中通过 Netcat 添加数据源并使用 FlatMap 进行简单的数据处理 2. 每个订单中,金额最大的那笔商品 env.socketTextStream , map, keyBy , maxBy/reduce
*/
public class _03_Reduce_exercise_02 {
public static void main(String[] args) throws Exception {
// 获取执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 添加数据源
DataStreamSource<String> stream = env.socketTextStream("hadoop01", 8899);
// 对数据流进行处理
stream.flatMap((String line, Collector<String> out) -> {
String[] split = line.split(",");
for (String word : split) {
out.collect(word);
}
}).returns(String.class) // 显式指定函数返回值类型
.print();
// 执行作业
env.execute("Flink Netcat Example");
}
}
🥙4.4 运行Flink程序
编译并运行上述Flink程序,程序将连接到Netcat服务器,并实时处理从服务器接收到的数据。
linux端:
控制台输出