网络编程模型「建议收藏」

网络编程模型

大家好,又见面了,我是全栈君。

多线程回声(Echo)模型:

网络编程模型「建议收藏」
网络编程模型「建议收藏」

 1 import java.io.PrintStream;
 2 import java.net.ServerSocket;
 3 import java.net.Socket;
 4 import java.util.Scanner;
 5 
 6 public class EchoSrever {
 7     private static class MyThread implements Runnable{
 8         private Socket client;
 9         public MyThread(Socket client){
10             this.client=client;
11         }
12         @Override
13         public void run() {
14             try{
15             Scanner scan = new Scanner(client.getInputStream());
16             scan.useDelimiter("\n");
17             PrintStream out = new PrintStream(client.getOutputStream());
18             boolean flag = true;
19             while (flag) {
20                 if (scan.hasNext()) {
21                     String str = scan.next().trim();
22                     if ("byebye".equalsIgnoreCase(str)) {
23                         out.println("BYEBYE!!!");
24                         flag = false;
25                         break;
26                     }
27                     out.println("Echo:" + str);
28                 }
29             }
30             out.close();
31             scan.close();
32             }catch(Exception e){
33                 
34             }
35         }
36         
37     }
38     public static void main(String[] args) throws Exception {
39         ServerSocket server = new ServerSocket(8888);
40     boolean flag = true;
41         while (flag) {
42             Socket client = server.accept();
43             new Thread(new MyThread(client)).start();
44         }
45         server.close();
46     }
47 }

服务器端

网络编程模型「建议收藏」
网络编程模型「建议收藏」

 1 import java.io.IOException;
 2 import java.io.PrintStream;
 3 import java.net.Socket;
 4 import java.util.Scanner;
 5 
 6 public class EchoSocket {
 7     public static void main(String[] args) throws Exception, IOException {
 8         Socket client = new Socket("localhost",8888);
 9         Scanner keyScan = new Scanner (System.in);
10         keyScan.useDelimiter("\n");
11         Scanner netScan = new Scanner (client.getInputStream());
12         netScan.useDelimiter("\n");
13         PrintStream out = new PrintStream(client.getOutputStream());
14         boolean flag = true;
15         while(flag){
16             System.out.println("输入要发送的内容:");
17             String str =null;
18             if(keyScan.hasNext()){
19                 str = keyScan.next().trim();
20                 out.println(str);
21                 if (netScan.hasNext()) {
22                     System.out.println(netScan.next());
23                 }
24             }
25             if("byebye".equalsIgnoreCase(str)){
26                 flag=false;
27             }
28         }
29         out.close();
30         netScan.close();
31         keyScan.close();
32     }
33 }

客户端代码

 

转载于:https://www.cnblogs.com/ak666/p/8204726.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107774.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言学习——字符串与整数、浮点数、无符号整数之间的转换常用函数

    C语言学习——字符串与整数、浮点数、无符号整数之间的转换常用函数atof(将字符串转换成浮点型数)表头文件 #include <stdlib.h>定义函数 double atof(const char nptr);函数说明atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’’)才结 束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,…

    2022年8月18日
  • mysql解锁_mysql锁表如何解锁

    mysql解锁_mysql锁表如何解锁什么是MySQL锁表?为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。MySQL有三种锁的级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-levellocking);BDB存储引擎采用的是页面锁(page-levellocking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-levellockin…

    2022年6月3日
  • 提高网站页面加载速度的方法

    提高网站页面加载速度的方法

    2021年9月23日
  • 夜深人静写算法(一)- 搜索入门

    夜深人静写算法(一)- 搜索入门搜索入门:深度优先搜索(记忆化、剪枝、IDA*)、广度优先搜索(A*、双向广搜)

    2022年7月26日
  • 软件工程需求分析实验_实验设备管理系统需求分析

    软件工程需求分析实验_实验设备管理系统需求分析一、系统的问题描述1.系统简介每学年要对实验室设备使用情况进行统计、更新。其中:(1)对于已彻底损坏的做报废处理,同时详细记录有关信息。(2)对于由严重问题(故障)的要及时修理,并记录修理日期、设备名、编号、修理厂家、修理费用、责任人等。(3)对于急需修改但又缺少的设备,需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、编号、型号、规格、单价、数量、购置日期、生产厂家、保质期和经办人等信息),同时更新申请表的内容。(4)随时对现有设备及其

    2022年10月13日
  • 浅析MySQL中concat及group_concat的使用

    浅析MySQL中concat及group_concat的使用

    2022年2月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号