热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络编程金典echo案例

2019独角兽企业重金招聘Python工程师标准一、服务端packagecom.server;importjava.io.PrintStream;importjava.ne

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

一、服务端

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;}
}

输出结果:

978af7fe1ed8353b9bc1fe19f1e994bb9d0.jpg

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

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



推荐阅读
author-avatar
紫藤老君的八卦炉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有