使用Socket 进行聊天模拟

客户连接

// 1.创建Socket对象,指定要连接的服务器的ip地址和端口号
// 循环
// 2.通过Socket对象获得字节输出流
// 3.写出字符串数据
// 4.通过Socket对象获得字节输入流
// 5.读取服务器回写过来的字符串数据
// 6.释放资源

服务端

// 1.创建ServerSocket对象,指定服务器端口号
// 2.调用accept()方法接收客户端请求,建立连接,返回Socket对象(没有连接成功会一直阻塞)
// 3.通过返回Socket对象获得字节输入流
// 4.读取客户端写过来的字符串数据
// 5.打印输出
// 6.通过返回Socket对象获得字节输出流
// 7.写出字符串数据
// 8.释放资源
// socket.close();
// ss.close();

具体代码

客户端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {12
    public static void main(String[] args) throws Exception {
        // 1.创建Socket对象,指定要连接的服务器的ip地址和端口号
        Socket socket = new Socket("127.0.0.1", 6666);

        // 循环
        while (true) {
            // 2.通过Socket对象获得字节输出流
            OutputStream os = socket.getOutputStream();

            // 3.写出字符串数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要对服务端说的悄悄话:");
            String msg = sc.next();
            os.write(msg.getBytes());// 写了一个byte数组

            // 4.通过Socket对象获得字节输入流
            InputStream is = socket.getInputStream();

            // 5.读取服务器回写过来的字符串数据
            byte[] bys = new byte[8192];
            int len = is.read(bys);
            System.out.println("服务器回写的数据:" + new String(bys, 0, len));
        }

        // 6.释放资源
        // socket.close();

    }
}

服务端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    public static void main(String[] args) throws Exception {
        // 1.创建ServerSocket对象,指定服务器端口号
        ServerSocket ss = new ServerSocket(6666);

        // 2.调用accept()方法接收客户端请求,建立连接,返回Socket对象(没有连接成功会一直阻塞)
        Socket socket = ss.accept();

        while (true) {
            // 3.通过返回Socket对象获得字节输入流
            InputStream is = socket.getInputStream();

            // 4.读取客户端写过来的字符串数据
            byte[] bys = new byte[8192];
            int len = is.read(bys);

            // 5.打印输出
            System.out.println("客户端发送过来的数据:" + new String(bys, 0, len));

            // 6.通过返回Socket对象获得字节输出流
            OutputStream os = socket.getOutputStream();

            // 7.写出字符串数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要对客户端说的悄悄话:");
            String msg = sc.next();
            os.write(msg.getBytes());
        }

        // 8.释放资源
        // socket.close();
        // ss.close();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值