什么是 telnet
telnet 协议是 TCP/IP 协议族群中的一份子,是远程登录服务器的标注协议和主要方式
可以把 telnet 当作一种通信协议,可以访问目标主机上的软、硬件资源,telnet 平常就是查看某个端口是否可访问。我们在开发的过程中,tomcat 项目启动默认端口为 8080,那么在启动了服务之后,可以使用 telnet 查看端口是否可用
在终端使用者电脑上使用 telnet 程序输入命令,命令会在目标服务器上运行,就像直接在目标服务器的控制台上输入一样
mac os 安装 telnet
作者是在学习 netty 时写了一个 socket 例子,因为 mac os 上并没有默认安装 telnet,为了方便测试所以文章介绍如果安装以及简单使用 telnet
安装 brew
文章基于 homebrew 进行安装,没有 homebrew 的同学根据此网址安装 homebrew 安装
安装 telnet
使用 brew 命令安装 telnet
brew install telnet
telnet 命令
1、查看正在运行的端口 netstat -AaLlnW
2、连接服务器某端口,是否能够连接成功,命令格式如:telnet ip port
微信搜索【源码兴趣圈】,关注龙台,回复【资料】领取涵盖 GO、Netty、SpringCLoud Alibaba、Seata、开发规范、面试宝典、数据结构等电子书 or 视频学习资料!
比如我想要连接上图中的 8888 端口,那就是 telnet 127.0.0.1 8888
代表连接成功,成功连接后使用 ctrl+c 是退出不了的,需要使用 ctrl + ] 组合键进入 telnet 客户端,输入 quit 回车退出
socket 测试
这里通过 java 写一个小程序,模拟 serverSocket 提供服务,通过 telnet 命令连接服务端
public static void main(String[] args) throws Exception {
ExecutorService pool = Executors.newCachedThreadPool();
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("====== ServerSocket 服务启动 ======");
while (true) {
System.out.println("====== 连接请求进入 ======");
Socket socket = serverSocket.accept();
System.out.println("====== 客户端连接成功 ======");
pool.execute(() -> {
try {
byte[] bytes = new byte[1024];
try {
InputStream inputStream = socket.getInputStream();
while (true) {
int read = inputStream.read(bytes);
if (read == -1) {
break;
}
System.out.println(new String(bytes, 0, read));
}
} catch (IOException e) {
// ignore
}
} catch (Exception ex) {
// ignore
} finally {
try {
socket.close();
} catch (IOException e) {
// ignore
}
}
});
}
}
通过 telnet 命令发送请求到服务端,并将消息进行打印
日志输出
====== ServerSocket 服务启动 ======
====== 连接请求进入 ======
====== 客户端连接成功 ======
====== 连接请求进入 ======
hello world!
machen hello
结言
由于作者水平有限, 欢迎大家能够反馈指正文章中错误不正确的地方, 感谢 🙏
小伙伴的喜欢就是对我最大的支持, 如果读了文章有所收获, 希望能够 点赞、评论、关注三连!
推荐阅读:
- 【强烈推荐】1w 字,18 张图,彻底说清 springboot starter
- 【强烈推荐】谨慎使用 JDK 8 新特性并行流 ParallelStream
- 【强烈推荐】一文快速掌握 Redisson 如何实现分布式锁原理
- 【大厂面试真题】JDK 线程池中如何不超最大线程数快速消费任务
- 【大厂面试真题】JDK 线程池如何保证核心线程不被销毁
作者麻花,坐标帝都 Java 后端研发,励志成为架构师的一枚处女座程序员,专注高并发、框架底层源码、分布式等知识分享