本文共 2923 字,大约阅读时间需要 9 分钟。
//服务端可以不断的发送信息给客户端 也可以不断的接受客户端的信息//一个客户端 一个服务器public class Client04 { static Scanner sc = new Scanner(System.in); static Socket socket; public static void main(String[] args) { //创建客户端套接字 用户交互服务器 try { socket = new Socket("127.0.0.1", 8004); //根据套接字获取输出流 把信息从内存拿出来就是输出 写进内存就是输入 new Thread(()->{ while (true) { try { DataInputStream dataInputStream = new DataInputStream(socket.getInputStream()); String s = null; s = dataInputStream.readUTF(); System.out.println(s); } catch (IOException e) { e.printStackTrace(); } } //获取服务端发过来的消息 }).start(); while (true) { OutputStream outputStream = socket.getOutputStream(); //将字节输出流包装成数据字节输出 DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.flush(); //这行代码的确定缺点 程序会阻塞在这里等待输入 dataOutputStream.writeUTF("客户端说:"+sc.next()); } } catch (IOException e) { e.printStackTrace(); } }}
//服务端可以不断的发送信息给客户端 也可以不断的接受客户端的信息//一个客户端 一个服务器public class Server04 { static Scanner sc = new Scanner(System.in); static ServerSocket serverSocket; static Socket socket; public static void main(String[] args) { //创建服务端套接字ServerSocket 并指定端口号 try { serverSocket = new ServerSocket(8004); //通过服务端套接字 监听客户端的连接 如果没有客户端连接 程序会停留在此处 socket = serverSocket.accept();//返回的就是客户端的套接字 获取一个连接 //创建一个新的线程来服务器给客户端发送数据 new Thread(()->{ try { while (true) { //服务端继续给客户端发送消息 这里使用socket 而不是serverSocket 是因为服务端只有一个 客户端有很多个 给指定客户端发信息 DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); dataOutputStream.writeUTF("服务端说:"+sc.next()); dataOutputStream.flush(); } } catch (IOException e) { e.printStackTrace(); } }).start(); while(true) { //根据客户端套接字 获取对应的输入流 InputStream inputStream = socket.getInputStream(); //将字节输入流包装成 数据字节流 DataInputStream dataInputStream = new DataInputStream(inputStream); String s = dataInputStream.readUTF(); System.out.println(s); } } catch (IOException e) { e.printStackTrace(); } }}
转载地址:http://amhzi.baihongyu.com/