Java之网络编程模型

服务端:

public class EchoServer {
    public static void main(String[] args) throws IOException {
//        创建一个服务端的服务对象
        ServerSocket server = new ServerSocket(8888);    //该服务在9999端口
//         服务端监听端口,收到Client的连接信号后返回一个包含服务端向客户端连接的Socket对象
        Socket client = server.accept();    //等待客户端连接时,程序进入阻塞状态
//        写入服务端的客户端输出流
        Scanner scan = new Scanner(client.getInputStream());
        scan.useDelimiter("\n");
//        创建对客户端的输出流
        PrintStream out = new PrintStream(client.getOutputStream());
        boolean flag = true;    //循环标记
        while(flag) {    //循环
            if (scan.hasNext()) {    //如果有字符串
                String str = scan.next().trim();    //赋值当前字符串并删除其中的空格包括换行
//                字符串忽略大小写比较
                if("byebye".equalsIgnoreCase(str)) {
                    out.println("byebye");    //发送到客户端
                    flag = false;
                    break;    //找到匹配字符串时结束整个程序
                }
                out.println("ECHO:" + str);    //未匹配时的输出
            }
        }
    }
}

客户端:

public class EchoClient {
    public static void main(String[] args) throws UnknownHostException, IOException {
        Socket client = new Socket("localhost",8888);
        Scanner keyScan = new Scanner(System.in);    //用户输入信息,回车结束输入
//        等待服务端的输出(客户端的写入)
        Scanner netScan = new Scanner(client.getInputStream());
//        创建一个对服务端的打印输出流
        PrintStream netOut = new PrintStream(client.getOutputStream());
        boolean flag = true;
        while (flag) {
            System.out.println("请输入要发送的信息:");
            if (keyScan.hasNext()) {    //如果存在输入信息
                String str1 = keyScan.next().trim();    //读取字符串信息
                netOut.println(str1);    //发送到服务端
                if(netScan.hasNext()) {
                    String str2 = netScan.next().trim();
                    System.out.println(str2);
                    if("byebye".equals(str2)) {    //收到服务器的结束语后结束程序
                        flag = false;
                        break;
                    }
                }
            }
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值