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