ECHO服务: ECHO服务器仅返回它从客户处收集到的所有数据。是网络管理员测试可达性、调试协议软件及识别选路问题的重要工具,周知端口位于7
与此类似,Time服务的知名端口是37,记录了从1900年1月1日午夜起所经历的秒数;DATETIME服务的知名端口是13,允许获得当前的日期和时间
题目:
一.使用echo协议,编写程序测试主机可达性:它发送报文时对应答计时,以此测试可达性. 若5秒内收不到应答,则声明目的主机不可达, 进一步,估计网络延时。提交设计及程序代码
首先打开Telnet服务进行测试
然后使用telnet测试远程linux服务器,成功连上并返回结果
客户端发送代码以及注释
package my; 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) { long start = System.currentTimeMillis(); 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; // 修改循环标记 } long end = System.currentTimeMillis(); System.out.println("延时:"+(end-start)+"毫秒"); } scan.close(); // 关闭输入流 out.close(); // 关闭输出流 client.close(); // 关闭客户端 } }
实现echo结果如下: