• Java Socket编程,小案例(有注释)


    一、Socket编程

      在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。

    二、案例

     1.服务端

    • ① 创建ServerSocket对象,绑定监听端口
    • ② 通过accept()方法监听客户端请求
    • ③ 连接建立后,通过输入流读取客户端发送的请求信息
    • ④ 通过输出流向客户端发送相应信息
    • ⑤ 关闭相关资源
       1 package cn.kgc.sockettest.demo1;
       2 
       3 import java.io.*;
       4 import java.net.ServerSocket;
       5 import java.net.Socket;
       6 
       7 /**
       8  * 服务端
       9  *
      10  * @author
      11  * @create 2019-07-23 14:16
      12  **/
      13 public class server {
      14     public static void main(String[] args) {
      15         try {
      16             ServerSocket serverSocket = new ServerSocket(8080);
      17             System.out.println("服务器启动完成...监听启动!");
      18             //开启监听,等待客户端的访问
      19             Socket socket = serverSocket.accept();
      20             // 获取输入流,因为是客户端向服务器端发送了数据
      21             InputStream inputStream = socket.getInputStream();
      22             // 创建一个缓冲流
      23             BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
      24             String info = null;
      25             while ((info = br.readLine())!=null){
      26                 System.out.println("这里是服务端 客户端是:"+info);
      27             }
      28             //向客户端做出响应
      29             OutputStream outputStream = socket.getOutputStream();
      30             info = "这里是服务器端,我们接受到了你的请求信息,正在处理...处理完成!";
      31             outputStream.write(info.getBytes());
      32             outputStream.close();
      33         } catch (IOException e) {
      34             e.printStackTrace();
      35         }
      36     }
      37 }

      2.客户端

    • ① 创建Socket对象,指明需要连接的服务器的地址和端口号
    • ② 连接建立后,通过输出流想服务器端发送请求信息
    • ③ 通过输入流获取服务器响应的信息
    • ④ 关闭响应资源
      package cn.kgc.sockettest.demo1;
      
      import java.io.*;
      import java.net.Socket;
      
      /**
       * 客户端
       *
       * @author
       * @create 2019-07-23 14:17
       **/
      public class Client {
          public static void main(String[] args) {
              try {
                  Socket socket = new Socket("localhost",8080);
                  OutputStream outputStream = socket.getOutputStream();
                  String info = "你好啊!";
                  //输出!
                  outputStream.write(info.getBytes());
                  socket.shutdownOutput();
                  //接收服务器端的响应
                  InputStream inputStream = socket.getInputStream();
                  BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
                  while ((info = br.readLine())!=null){
                      System.out.println("接收到了服务端的响应!" + info);
                  }
                  //刷新缓冲区
                  outputStream.flush();
                  outputStream.close();
                  inputStream.close();
                  socket.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
      }

      然后,先执行服务端,再执行客户端的代码就可以了。这只是个小案例,有什么不足之处,请各位指教!

  • 相关阅读:
    AWS 免费套餐
    UWP DEP0700: 应用程序注册失败。[0x80073CF9] 另一个用户已安装此应用的未打包版本。当前用户无法将该版本替换为打包版本。
    UWP 应用程序名称本地化以及商店显示名称本地化
    ES6知识整理(6)--Symbol函数
    【web前端】移动端控制台插件,手机端页面查看相关页面控制台信息
    ES6知识整理(5)--对象的扩展
    ES6知识整理(4)--数组的扩展
    【移动端web】软键盘兼容问题
    ES6知识整理(3)--函数的扩展
    ES6知识整理(2)--变量的解构赋值
  • 原文地址:https://www.cnblogs.com/Cavalry-/p/11233862.html
Copyright © 2020-2023  润新知