2019独角兽企业重金招聘Python工程师标准>>>

一、服务端

package com.server;import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;/*** @Auther: chenzhou* @Date: 2019/2/25* @Description: 网络编程服务端* @version: 1.0*/
public class Server{public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(9999);//设置端口号System.out.println("等待客户端连接");Socket accept = serverSocket.accept();//首先接收客户端发来的消息,然后进行数据处理后发送回客户端Scanner scanner = new Scanner(accept.getInputStream());//得到客户端发送的数据PrintStream stream = new PrintStream(accept.getOutputStream());//向客户端发送数据Boolean flag = true;while (flag){if(scanner.hasNext()){String next = scanner.next().trim();if("bye".equals(next)){stream.println("ByeBye!!!");flag = false;}else{stream.println("[Echo]"+next);}}}//关闭流stream.close();scanner.close();serverSocket.close();}
}

二、客户端

package com.client;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;/*** @Auther: chenzhou* @Date: 2019/2/25* @Description: 网络编程客户端* @version: 1.0*/
public class Client {private static final BufferedReader BUFFERED_READER= new BufferedReader(new InputStreamReader(System.in));public static void main(String[] args) throws Exception{Socket socket = new Socket("localhost",9999);Scanner scanner = new Scanner(socket.getInputStream());//服务端发来的信息PrintStream stream = new PrintStream(socket.getOutputStream());//向服务端发送信息Boolean flag = true;while(flag){String input = getString("请输入要发送的内容");stream.println(input);if(scanner.hasNext()){String next = scanner.next();System.out.println(next);}if("bye".equalsIgnoreCase(input)){flag = false;}}stream.close();scanner.close();socket.close();}public static String getString(String Prompt) throws  Exception{System.out.println(Prompt);String s = BUFFERED_READER.readLine();return s;}
}

输出结果:

三、多线程实现服务端(多个客户端连接一个服务端)

package com.server;import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;/*** @Auther: chenzhou* @Date: 2019/2/25* @Description: 多线程实现服务端,让每个线程去处理客户端的请求* @version: 1.0*/
public  class ServerForMore implements  Runnable{Socket socket = null;Scanner scanner = null;PrintStream stream= null;Boolean flag = true;//构造器初始化参数public  ServerForMore(Socket client) throws Exception {this.socket = client;scanner = new Scanner(client.getInputStream());//得到客户端发送的数据stream = new PrintStream(client.getOutputStream());//向客户端发送消息}@Overridepublic void run() {while (this.flag){if(this.scanner.hasNext()){String next = scanner.next().trim();if("bye".equals(next)){stream.println("ByeBye!!!");flag = false;}else{stream.println("[Echo]"+next);}}}//关闭流stream.close();scanner.close();try {socket.close();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(9999);System.out.println("等待客户端连接。。。。");Boolean flag = true;while(flag){Socket client = serverSocket.accept();new Thread(new ServerForMore(client)).start();}serverSocket.close();}
}

转载于:https://my.oschina.net/chenzhou/blog/3014415

网络编程 -金典echo案例相关推荐

  1. Unity3D网络游戏开发——开始网络编程:Echo

    Unity3D网络游戏开发--开始网络编程:Echo(客户端部分) 什么是Echo程序 Echo程序是网络编程中最基础的案例.建立网络连接后,客户端向服务端发送一行文本,服务端收到后将文本送回客户端. ...

  2. 【Netty】NIO 网络编程 聊天室案例

    文章目录 一. NIO 聊天室需求 二. NIO 聊天室 服务器端 代码分析 三. NIO 聊天室 客户端 代码分析 四. NIO 聊天室 服务器端 完整代码 五. NIO 聊天室 客户端 完整代码 ...

  3. Socket网络编程tcp聊天案例(心跳包,多线程,断线重连机制)

    实现一个聊天的案例,使用多线程和心跳包.当服务器断开的时候,客户端会自动尝试重新连接,当服务器开启的时候,客户端会自动连接 Server服务器类 package Demo3_Chat;import c ...

  4. 安卓学习笔记40:基于套接字网络编程

    文章目录 零.学习目标 一.Socket概述 (一)两种传输模式 (二)基于Socket网络编程 三.案例演示 - C/S架构聊天室 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建聊天服务 ...

  5. 网络编程及socket模块

    目录 1.必备基础 1.1 网络架构 1.1.1 交换机 1.1.2 路由器 1.1.3 三层交换机 1.1.4 小型企业基础网络架构 1.1.5 家庭网络架构 1.1.6 互联网 1.2 网络核心词 ...

  6. 18.Socket网络编程

    JavaSE高级 网络编程 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Brow ...

  7. JavaSE高级 网络编程

    JavaSE高级 网络编程 教学目标 能够辨别UDP和TCP协议特点 UDP 无连接,基于数据包,发出去就不管了,性能好,可能丢失数据. TCP有连接,基于通信管道,可靠传输. 能够说出TCP协议下两 ...

  8. java echo程序,java网络编程 echo

    echo是? ECHO程序:是一个网络编程通信交互的经典例子,称为回应程序. -客户端输入的内容,服务器端会在这些内容前加上"ECHO":并将信息发回给客户端. 服务器端: pac ...

  9. JAVA入门到精通-网络编程补充和QQ案例

    ------------------------------------------------------ 补充讲解: 如何在网络间传递对象? [MyServer.java]服务器源代码 packa ...

最新文章

  1. SQL Server数据库自增字段正确的插入值的描述
  2. LeetCode 1222. 可以攻击国王的皇后(set)
  3. 深入解析ES6中let和闭包
  4. 浅谈SkyEye虚拟ECU
  5. C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题
  6. 2018春招-赛码网-例题-水仙花数
  7. 《大道至简——软件工程实践者的思想》阅读笔记之一
  8. 概率图模型(PGM)学习笔记(二)贝叶斯网络-语义学与因子分解
  9. 数控加工仿真系统 - FANUC OI 车床编程笔记(粗略)
  10. 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
  11. Halcon 3D 计算3D模型的3D表面法线
  12. 基于java的化妆品购物商城微信小程序的设计与实现 毕业设计毕设参考
  13. codeforces1299C Water Balance
  14. thinkphp5.0漏洞修复
  15. 新氧,今天受了点儿伤
  16. Word换页不用频繁敲回车
  17. google账号已停用,此账号的使用方式似乎违反了Google的政策
  18. w ndows平板插sim卡,HUAWEI MateBookE怎么插入sim卡上网和接收短信?
  19. 赛扬N4000和赛扬N5095的区别
  20. BW顾问进阶:SAP BW后勤数据源抽取机制

热门文章

  1. 普元nui:Navigations
  2. 数学专业转CS容易吗?需要做哪些准备?
  3. 四年后的十大赚钱行业
  4. 编译原理 - 语法分析(自下而上分析)
  5. break和continue的作用和区别是什么?(详细解答)
  6. VS2019+OpenCV安装与配置教程
  7. Arduino主控板三色呼吸灯衰减
  8. EasyDL之图片分类API接口实现-基于python语言
  9. Unity实现磁铁效果
  10. python文字转为图片