ServerSocket类

package server;

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class EchoServer {
    public static void main(String[] args) throws IOException {
        //1.
        ServerSocket serverSocket = new ServerSocket(8189);
        //2.阻塞,等待客户端连接
        System.out.println("等待客户端连接。。。");
        Socket socket = serverSocket.accept();
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println("客户端:"+localHost+"已连接");
        //3.inputStream用于读取客户端的消息(请求),outputStream用于向客户端输出消息(响应)
        InputStream inputStream = socket.getInputStream();
        OutputStream outputStream = socket.getOutputStream();
        //4.读取输入流,将输入流转换成键盘输入
        Scanner scanner = new Scanner(inputStream, String.valueOf(StandardCharsets.UTF_8));
        //5.将输出流转换成打印流,在控制台输出
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
        PrintWriter printWriter = new PrintWriter(outputStreamWriter, true/*自动刷新*/);
        //6.向客户端发送消息,会输出到客户端终端设备上
        printWriter.println("Hello, Enter BYE to exit.");
        //7.scanner用于读取客户端的键盘输入,printWriter将scanner读取到的输入输出回显到客户端终端设备上
        boolean done = false;
        while(!done && scanner.hasNextLine()){
            String line = scanner.nextLine();
            printWriter.println("Echo: "+line);
            if("BYE".equals(line.trim())){
                done = true;
                System.out.println(localHost+"已退出");
            }
        }


    }
}

运行EchoSever服务端,

在cmd终端输入telnet localhost 8981并回车,

就可以输入消息,并自动回显,输入BYE退出连接

 注:scanner用于读取客户端的键盘输入,printWriter将scanner读取到的输入输出回显到客户端终端设备上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值