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

网络编程模型

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

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


相关推荐

  • 使用SpringBoot RestTemplate实现第三方接口对接

    使用SpringBoot RestTemplate实现第三方接口对接实现对接第三方接口,可以使用HttpClient(年岁较久),也可以使用SpringBootRestTemplate(新生代)。可根据个人喜好选择适当的方式进行对接,个人推荐使用SpringBootRestTemplate。具体使用如下:自定义配置类:application.yml文件中配置:注意:对应XXXConfig实体类中属性,在application.yml中配置必须在同一级…

    2022年5月30日
    33
  • 笔记7 正则(grep、sed、awk工具)

    笔记7 正则(grep、sed、awk工具)

    2021年6月6日
    104
  • django 用户认证(电视业务认证失败怎么办)

    一般在公司内部都会使用ldap系统进行用户认证。安装pipinstalldjango-auth-ldap主要在settings.py的配置 点击(此处)折叠或打开 #设置后端认证函数,先进行ldap认证后进行数据库认证 AUTHENTICATI…

    2022年4月17日
    44
  • oracle rac常用命令_oracle rac集群搭建

    oracle rac常用命令_oracle rac集群搭建SRVCTLAdd添加数据库或实例的配置信息。在增加实例中,与-i一起指定的名字应该与INSTANCE_NAME和ORACLE_SID参数匹配。srvctladddatabase-ddatabase_name[-mdomain_name]-ooracle_home[-sspfile]srvctladdinstance-d database_name -iinsta…

    2022年9月11日
    0
  • Bean @session_spring类方法注解

    Bean @session_spring类方法注解刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagger2后,找了半天的原因,发现使用@ApiImplicitParam这个注解可以解决这个问题。对应下面的参数。所以我们可以使用这个注解来解决我们所遇到的参考为空的问题。而且已经集成了swagger2,所以我们尽量…

    2022年10月23日
    0
  • Python二级考试知识点(史上最全)

    Python二级考试知识点(史上最全)Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from库import函数、from库impor*、import库as别名考点1.2基本输入输出函数:input()、eval()、print()考点1.3源程序的书写风格-Python之禅运行importthis即可出现考点1.4Pytho

    2022年5月20日
    116

发表回复

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

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