《Java语言高级特性(阿里云大学)》笔记 第35~38章 网络+数据库(文档+思维导图)

这是一份关于Java高级特性的笔记,涵盖了网络编程和数据库操作。详细讲解了网络编程中的TCP和UDP模型,包括Echo程序和BIO处理模型。在数据库部分,介绍了JDBC基础,包括连接MySQL数据库,Statement和PreparedStatement接口的使用,以及数据查询和更新的实际示例。
摘要由CSDN通过智能技术生成

课程链接:https://edu.aliyun.com/course/1012

第1~6章 关于线程:https://blog.csdn.net/weixin_43494837/article/details/113764127?spm=1001.2014.3001.5501

第7~14章 类库+正则+国际化+比较器:https://blog.csdn.net/weixin_43494837/article/details/113764156?spm=1001.2014.3001.5501

第15~20章 关于IO:https://blog.csdn.net/weixin_43494837/article/details/113764173?spm=1001.2014.3001.5501

第21~27章 关于反射:https://blog.csdn.net/weixin_43494837/article/details/112797304?spm=1001.2014.3001.5501

第28~34章 关于类集:https://blog.csdn.net/weixin_43494837/article/details/113797177?spm=1001.2014.3001.5501

(思维导图在最后)

————————————————————————————————————

第35章:网络编程

课时152:网络编程简介

  • 网络编程:多台主机之间的数据通讯操作。

  • 网络程序的模型:

    • C/S(Client客户端/Server服务器端):要开发两套程序,一套为客户端程序,一套为服务器端程序。如服务器端发生了改变,那么客户端也需要进行相应的更新处理。这种开发,可以由开发者自定义传输协议,并且使用一些比较私密的端口,安全性较高,但开发维护成本也较高。
      • TCP:可靠的数据连接
      • UDP:不可靠的数据连接
    • B/S(Browse浏览器/Server服务器端):只开发一套服务器端程序,然后利用浏览器作为 客户端进行访问。这种开发,开发与维护的成本较低,但由于使用的是公共的HTTP协议以及公共的80端口,所以安全性较低。

    现在开发基本以B/S为主,然而本次讲解主要为C/S。

课时153:Echo程序模型

  • TCP:网络程序中最基本的开发模型。

  • 实现TCP数据的交互处理:

    • ServerSocket:服务器端。
      • 主要目的:设置服务器端的监听端口。
    • Socket:客户端,用来描述用户。
      • 主要目的:指明要连接的服务器地址与端口。

    ServerSocket与Socket.PNG

  • 实现(Echo模型):

    Echo模型.PNG

    • 代码(个人实现):

      • 服务器端接收消息,客户端发送消息:

        • 服务器端定义:

          package cn.pjh.network;
          import java.net.ServerSocket;
          import java.net.Socket;
          import java.util.Scanner;
          public class EchoServer {
              public static void main(String[] args) {
                  ServerSocket server = null;
                  Socket client = null;
                  Scanner input = null;
                  try {
                      server = new ServerSocket(9999); // 定义服务器端
                      System.out.println("wait for client ......");
                      client = server.accept(); // 接收客户端的连接
                      input = new Scanner(client.getInputStream()); // 客户端输入流
                      while (input.hasNextLine()) {
                          String str = input.nextLine().trim();
                          if (!str.isEmpty()) {
                              if (str.equals("exit")) {
                                  System.out.println("client go offline.");
                                  return;
                              }
                              else System.out.println("client - " + str);
                          }
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                      try {
                          server.close();
                          client.close();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                      input.close();
                  }
              }
          }
          
        • 客户端定义:

          package cn.pjh.network;
          import java.io.PrintWriter;
          import java.net.Socket;
          import java.util.Scanner;
          public class EchoClient {
              public static void main(String[] args) {
                  Socket server = null;
                  PrintWriter output = null;
                  Scanner keyboard_input = null;
                  try {
                      server = new Socket("localhost", 9999); // 定义要连接的服务器端
                      output = new PrintWriter(server.getOutputStream()); // 服务器端输出流
                      boolean flag = true;
                      while (flag) {
                          System.out.print("to server: ");
                          keyboard_input = new Scanner(System.in);
                          String keyboard_str = keyboard_input.nextLine().trim();
                          output.println(keyboard_str);
                          output.flush(); // 强制刷新缓冲区
                          if (keyboard_str.equals("exit")) flag = false;
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                      try {
                          server.close();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                      output.close();
                      keyboard_input.close();
                  }
              }
          }
          
          
      • 服务器端与客户端互发消息:

        • 服务器端定义:

          package cn.pjh.network;
          import java.io.PrintWriter;
          import java.net.ServerSocket;
          import java.net.Socket;
          import java.util.Scanner;
          public class EchoServer {
              public static void main(String[] args) {
                  ServerSocket server = null;
                  Socket client = null;
                  Scanner input = null;
                  PrintWriter output = null;
                  Scanner keyboard_input = null;
                  try {
                      server = new ServerSocket(9999); // 定义服务器端
                      System.out.println("wait for client ......");
                      client = server.accept(); // 接收客户端的连接
                      input = new Scanner(client.getInputStream()); // 客户端输入流
                      output = new PrintWriter(client.getOutputStream()); // 客户端输出流
                      while (input.hasNextLine()) {
                          String str = input.nextLine().trim();
                          if (!str.isEmpty()) {
                              System.out.println("client - " + str);
                              if (str.equals("exit")) {
                                 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值