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

网络编程模型

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

多线程回声(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Tomcat部署WAR包访问不带项目名的方式

    Tomcat部署WAR包访问不带项目名的方式1、将项目打成WAR包放在Tomcat的webapps目录下2、在Tomcat的安装目录的conf下找到server.xml的文件,如:D:\apache-tomcat-9.0.8\conf\server.xml3、在Host标签里边添加<Hostname=”localhost”appBase=”webapps”unpackWARs=”true”…

    2022年5月16日
    124
  • 计算机ATA考试详细讲解

    计算机ATA考试详细讲解国计算机信息高新技术考试(CITT)是原劳动部根据中央有关稳妥发展劳动力市场、积极进行职业技能鉴定工作的有关精神,为了适应社会发展和科技进步的需要,提高劳动力素质和促进就业,加强计算机信息技术领域新职业、新工种职业技能的培训考核工作,于1996年,以”劳部发[1996]19号”文件《关于开展计算机信息高新技术培训考核工作的通知》,由劳动和社会保障部职业技能鉴定中心,在全国范围内统一组织实施的社会化职业技能考试。整个考试由劳动保障部职业技能鉴定中心负责题库管理、各省(自治区、直辖市)负责考试的组织、考试站负责

    2022年7月13日
    20
  • java二维数组初始化导入案例_Java二维数组初始化的方法详解

    java二维数组初始化导入案例_Java二维数组初始化的方法详解对于一个新使用的工具,我们会进行初步的初始化工具,目的是为了加上一些使用的配置。在学过了一维数组后,那么二维数组是加了一层维度的一维数组。在初始化方面,二维数组有三种方法,相信很多人只是掌握了其中的一种。下面本篇就Java二维数组简单介绍,然后就三种初始化方法带来详解。1.二维数组说明数组是一个容器,用来存储数据的。现在数组中存储的不再是int,double..的类型了,而是存储的数组。数组中的元…

    2022年5月25日
    48
  • Python 运算符优先级

    Python 运算符优先级

    2021年10月28日
    44
  • gmap绘制路径_cad画可见点

    gmap绘制路径_cad画可见点将在地图上用鼠标左键点击的点绘制出来(两点之间用直线连接),并且能够随地图一起实现等比例缩放和拖拽。GMap主要涉及到几个坐标的转换:经纬度与GPoint的转换:GPoint是gMapControl控件坐标,坐标原点(0,0)位于控件的左上角,这个转换用函数FromLatLngToLocal()完成。GPoint与经纬度的转换:将控件坐标转换成经纬度,用函数FromLocalToL

    2025年7月30日
    3
  • blender2.9教程_赖世雄入门篇

    blender2.9教程_赖世雄入门篇Blender2.8基础(一)基础操作与常用快捷键▶Ctrl+N:创建新工程一、视图操作1、放大视图▶视图最大化显示:Ctrl+空格(左键点击视图任意地方可以选择视图,然后按Ctrl+空格可以最大化显示视图。)▶切换全屏模式:Ctrl+Alt+空格2、切换视图▶切换视图:Alt(按住不放)+按住中键上下或左右移动鼠标(每切换一次视图就必须重新按一下中键并移动鼠标)▶……

    2022年8月10日
    9

发表回复

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

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