Echo 程序模型|学习笔记

简介: 快速学习 Echo 程序模型

开发者学堂课程【Java 高级编程Echo 程序模型】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/20/detail/429


Echo 程序模型


TCP 程序的基本实现

TCP 的程序开发是网络程序的最基本的开发模型,其核心的特点是使用两个类实现数据的交互处理: ServerSocket (服务器端)、Socket客户端

: ServerSocket Socket:

图片1.png

ServerSocket 的主要目的是设置服务器的监听端口,而 Socket 需要指明要连接的服务器地址与端口。

实现一个数据的最简单的操作如下:即: Echo 程序实现

图片2.png

范例:实现服务器端的定义

package cn.mldn.demo.server;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;

public class EchoServer {

public static void main(String[] args) throws Exception {

ServerSocket server=new ServerSocket(9999);//设置服务器端的监听端口

System.out.println("等待客户端连接............");

Socket client=server.accept();//有客户端连接

//首先需要先接收客户端发送来的信息,而后才可以将信息处理之后发送回客户端

Scanner scan = new Scanner(clien.getInputStream());//客户端输入流

scan. useDelimiter("\n");//设置分隔符

PrintWriter out=new PrintWriter(client.getOutputStream());//客户端输出流

boolean flag=true;//循环标记

while (f1ag) {

if(scan.hasNext())​​ ​​{ ​​ ​​//现在有数据发送

String val = scan.next();//接收发送的数据if ("byebye".equalsIgnoreCase(va1)) {out.println("ByeByeBye....");

flag = false;//结束循环

}

else {

out.println("[ECHO]"+ val);

client.close();

server.close(;

注:如果此时需要对程序进行测试,最好的方法是直接使用.最好的方法是直接使用 telnet 命令完成,但是此命令在 windows7 已经变为了默认不开启状态,所以如果要想使用则必须单独启用此命令。

范例:客户端代码

package cn.mldn.demo.client;

import java.io.BufferedReader;

import java.io.InputStreamReader ;import java.net.Socket;

public class EchoClient (

private static final BufferedReader KEYBOARD_ INPUT = new BufferedReader(new InputStreamReader(Syspublic static void main(String[ ] args) throws Exception

Socket client = new Socket("localhost",9999);​​//定义服务器端的连接信息​​

//现在的客户端需要有输入与输出的操作支持,所以依然要准备出Scanner与PrintWriter

Scanner scan = new Scanner(client. getInputStream());​​//接受服务器端的输入内容

PrintWriter out = new PrintWriter(client.getOutputStream());​​//向服务器端​​public String getString(String prompt) throws Exception ​​{

System.out.print (prompt) ;

String str = KEYBOARD_ INPUT. readLine() ;

return str ;

if (scan. hasNext())​​ {//服务器端有回应了​​System.out.println(scan.next());

if ("byebye".equalsIgnoreCase(input)) ​​{

flag

scan.close();

out.c1ose();

c1ient.close();

注:此时就实现了一个最基础的客户端与服务器端之间的数据通讯操作。

            </div>
相关文章
|
消息中间件 负载均衡 调度
Docker swarm实现基于Consul和Haproxy的RabbitMQ高可用集群
基于Consul服务发现和Haproxy实现的RabbitMQ高可用的负载均衡集群
|
6月前
|
设计模式 人工智能 前端开发
通义灵码2.0 AI 程序员体验官招募活动---通义灵码评测
在大模型不断更新迭代的当下,众多大厂纷纷推出自家的 AI 编码助手。其中,阿里云的通义灵码堪称市场上最为成熟的产品之一,紧随其后的则是腾讯的 AI 助手。在近期实际项目开发过程中,我使用了通义灵码助手,其最新版本展现出了令人惊叹的强大性能。在一些模块编码任务上,通义灵码表现尤为出色,生成的代码在命名规范性、易扩展性以及易读性方面,甚至超越了大多数普通程序员。通义灵码在生成代码时,不仅会考量设计模式,遵循重构原则,还具备强大的 bug 检测与修复能力,在单元测试方面同样表现优异。接下来,本文将通过一个小游戏的实例,对通义灵码的各项功能展开测试。
180 1
通义灵码2.0 AI 程序员体验官招募活动---通义灵码评测
|
机器学习/深度学习 数据可视化 JavaScript
Plotly可视化介绍
Plotly可视化介绍
392 0
|
10月前
|
安全 持续交付 Docker
深入理解并实践容器化技术——Docker 深度解析
深入理解并实践容器化技术——Docker 深度解析
406 2
|
NoSQL 关系型数据库 MySQL
Vgo-适合golang初学者的开源框架
# Vgo Vgo是一款基于Gin的开源服务端框架,集成了Redis、Mysql、JWT及队列等技术栈,适合Golang初学者。项目包括Vgo-Gitee和VgoAdmin-Gitee,可通过克隆仓库并按照安装指南进行部署。其目录结构清晰,涵盖路由、模型、后台接口等功能模块,更多功能持续开发中。
262 3
|
Prometheus 监控 数据可视化
性能测试:主流性能监控工具介绍
Linux系统中,`vmstat`和`top`提供基本监控;Nmon是实时性能分析工具,轻量且功能丰富;Collectd+InfluxDB+Grafana组合用于系统数据收集、存储和可视化;Prometheus+Grafana则提供灵活的监控和定制化仪表板。这些工具帮助企业监控系统性能,及时发现和解决问题。
Flutter-无限循环滚动标签
Flutter-无限循环滚动标签
235 0
|
Rust Anolis 芯片
Anolis OS 23.1 BETA 预览版:龙芯同源异构完成,支持更多芯片厂家
BETA 预览版本整体取得了新的进展,主要在各类架构和芯片支持层面实现了更广泛的支持。
|
Linux Nacos
蓝易云 - CentOS7 Nacos设置开机自动重启
以上就是在CentOS 7上设置Nacos开机自动重启的详细步骤。
470 0

热门文章

最新文章