Socket基础的聊天代码

本文展示了如何使用Java实现TCP套接字通信。客户端首先启动,通过Socket连接到localhost的8080端口。然后,它创建输出流并读取用户输入,直到输入'exit'为止。服务端在8080端口监听,接受连接,并读取客户端发送的数据。这是一个基本的客户端-服务端交互模型。
摘要由CSDN通过智能技术生成

使用

Client: 客户端
Server: 服务端
使用API: 写入、写出流、套接字Socket
启动:先启动客户端,后服务端

Client类

public class Client implements Serializable {
   private Socket socket; // 套接字
    public Client() {
        // 实例化构造
        try {
            socket = new Socket("localhost", 8080);// TCP
        } catch (IOException e) {
            System.out.println("连接中断");
            e.printStackTrace();
        }
    }
    public void start(){
            try {
                OutputStream outputStream = socket.getOutputStream();
                // 使用输入流
                OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
                BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
                // 启用行刷新
                PrintWriter printWriter = new PrintWriter(bufferedWriter,true);

                // 使用流
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入:exit为退出");
                while (true) {
                    String s = scanner.nextLine();
                    if ("exit".equals(s))  {
                    	printWriter.close();
                        bufferedWriter.close();
                        outputStreamWriter.close();
                        outputStream.close();
                        break;
                    }
                    printWriter.println(s);
                }

            } catch (IOException e) {
                System.out.println("信息中断");
                e.printStackTrace();
            }
    }

    public static void main(String[] args) {
        Client client = new Client();
        client.start();
    }
}

Server类

public class Server  implements Serializable {
    private ServerSocket serverSocket;
    public Server() {
        try {
            serverSocket = new ServerSocket(8080);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void start(){
        Socket accept = null;
        try {
            accept = serverSocket.accept();
            InputStream inputStream = accept.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            while (true) {
                String s = bufferedReader.readLine();
                System.out.println("接收"+s);
            }
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("连接中断");
        }
    }

    public static void main(String[] args) {
        Server server = new Server();
        server.start();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大众筹码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值