IDEA实现简单微信QQ聊天(客户端发送消息,服务端接收,BIO)

接下来代码实现
以下服务端 用来接收消息

public class WechatServer {
    static byte[] bytes = new byte[1024]; 

    public static void main(String[] args) {
        try {
            // 用于监听
            ServerSocket serverSocket = new ServerSocket();
            serverSocket.bind(new InetSocketAddress(8080));
            while (true) {
                System.out.println("wait conn ...");
                // 阻塞  等待连接
                Socket socket = serverSocket.accept();
                System.out.println("conn success");
                System.out.println("wait data...");
                // 阻塞 read 读了多少字节 阻塞拿数据
                int read = socket.getInputStream().read(bytes);
                System.out.println("data success");

                String content = new String(bytes);
                System.out.println(content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以下是客户端
在这里可以发送消息

public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("127.0.0.1",8080);
            Scanner scanner = new Scanner(System.in);
            String txt = scanner.next();
            socket.getOutputStream().write(txt.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

首先, 启动服务端

在这里插入图片描述
输出wait conn… 等待连接
然后启动客户端

在这里插入图片描述
现在是等待输入状态,将想要发送给服务器的数据输入
在这里插入图片描述
发送结束,客户端停止,现在回去看服务端
在这里插入图片描述
当启动客户端时,服务端输出conn success 连接成功, 然后等待数据 wait data
客户端发送数据, 接收输出 客户端发来的数据
然后继续等待连接
其实,这是bio ,同步阻塞:

在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,
然后在客户端启动Socket来对服务端进行通信, 默认情况下服务端需要对每个请求建立一堆线程等待请求,
而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,
如果有的话,客户端会线程会等待请求结束后才继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值