【网络编程】基于TCP完成ECHO服务

简介: 【网络编程】基于TCP完成ECHO服务

ECHO服务: ECHO服务器仅返回它从客户处收集到的所有数据。是网络管理员测试可达性、调试协议软件及识别选路问题的重要工具,周知端口位于7


与此类似,Time服务的知名端口是37,记录了从1900年1月1日午夜起所经历的秒数;DATETIME服务的知名端口是13,允许获得当前的日期和时间


题目:

一.使用echo协议,编写程序测试主机可达性:它发送报文时对应答计时,以此测试可达性. 若5秒内收不到应答,则声明目的主机不可达, 进一步,估计网络延时。提交设计及程序代码


首先打开Telnet服务进行测试



然后使用telnet测试远程linux服务器,成功连上并返回结果



客户端发送代码以及注释

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
    private static final BufferedReader KEYBOARD_INPUT = new BufferedReader(new InputStreamReader(System.in));
    public static String getString(String prompt) throws Exception { // 键盘信息
        System.out.print(prompt);
        String str = KEYBOARD_INPUT.readLine();
        return str;
    }
    public static void main(String[] args) throws Exception {
        //创建socket,指定ip和端口
        Socket client = new Socket("124.71.99.11", 7);
        //准备出Scanner与PrintWriter,一个读取服务器反馈消息,一个发送本地消息
        Scanner in = new Scanner(client.getInputStream());
        PrintStream out = new PrintStream(client.getOutputStream());
        //创建Scanner读取本地输入
        Scanner scan=new Scanner(System.in);
        boolean flag = true; // 循环标记
        while (flag) {
            System.out.print("发送:");
            String input = scan.nextLine().trim();
            //发送给服务器
            out.println(input);
            //服务器端有回应
            if (in.hasNext()) {
                System.out.println("接收:"+in.nextLine()); // 输出回应信息
            }
            if ("end".equalsIgnoreCase(input)) {
                flag = false; // 修改循环标记
            }
        }
        scan.close(); // 关闭输入流
        out.close(); // 关闭输出流
        client.close(); // 关闭客户端
    }
}

实现echo结果如下:



相关文章
|
7月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
402 61
|
Ubuntu 网络协议 Unix
02理解网络IO:实现服务与客户端通信
网络IO指客户端与服务端通过网络进行数据收发的过程,常见于微信、QQ等应用。本文详解如何用C语言实现一个支持多客户端连接的TCP服务端,涉及socket编程、线程处理及通信流程,并分析“一消息一线程”模式的优缺点。
366 0
|
8月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
311 4
|
9月前
|
机器学习/深度学习 人工智能 安全
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
285 8
|
10月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
377 12
|
12月前
|
安全 网络协议 网络安全
【Azure APIM】APIM服务配置网络之后出现3443端口不通,Management Endpoint不健康状态
如果没有关联的网络安全组,则阻止所有网络流量通过子网和网络接口。
260 30
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
354 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
11月前
|
云安全 人工智能 安全
公共云网络安全即服务!阿里云稳居市占率第一!
公共云网络安全即服务!阿里云稳居市占率第一!
|
11月前
|
网络协议 测试技术 Linux
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
275 0
|
网络协议
TCP报文格式全解析:网络小白变高手的必读指南
本文深入解析TCP报文格式,涵盖源端口、目的端口、序号、确认序号、首部长度、标志字段、窗口大小、检验和、紧急指针及选项字段。每个字段的作用和意义详尽说明,帮助理解TCP协议如何确保可靠的数据传输,是互联网通信的基石。通过学习这些内容,读者可以更好地掌握TCP的工作原理及其在网络中的应用。