zoukankan      html  css  js  c++  java
  • 20145105 《Java程序设计》第10周学习总结

    20145105 《Java程序设计》第10周学习总结

    教材学习内容总结

    JAVA网络编程

    一、网络概述

    (一)计算机网络概述

    • 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。

    • IP地址:,网络中的每个设备都会有的一个唯一的数字标识,方便识别网络上的每个设备。

    • 域名:比IP地址更方便记忆,一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。

    • DNS服务器:将域名转换为IP地址

    • 端口:端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。

    • IP地址——端口:相当于总机与分机的关系,在进行网络通讯交换时,通过IP地址查找到该台计算机,然后通过端口标识这台计算机上的一个唯一的程序。

    (二)网络编程概述

    • 客户端:第一次主动发起通讯的程序

    • 服务器端:在第一次通讯中等待连接的程序

    • C/S结构(客户端/服务器结构):开发时需要分别开发客户端和服务器端

      • 优势:表现力丰富,
      • 缺陷:通用性差,维护的压力比较大
    • B/S结构(浏览器/服务器结构):在开发时只需要开发服务器端即可

      • 优势:开发的压力比较小,不需要维护客户端
      • 缺陷:浏览器的限制比较大,表现力不强,无法进行系统级操作等
    • 协议:网络中传输的数据格式

    (三)网络通讯方式

    • TCP(传输控制协议)方式:

      • 类似打电话
      • 需要建立专门的虚拟连接,然后进行可靠的数据传输
      • 如果数据发送失败,则客户端会自动重发该数据
      • 用于传输重要数据
      • 速度稍慢
    • UDP(用户数据报协议)方式:

      • 类似发短信
      • 不需要建立专门的虚拟连接,传输也不是很可靠
      • 如果发送失败则客户端无法获得
      • 用于传输大量的非核心数据

    二、网络编程技术

    (一)网络编程步骤

    1. 客户端的编程:

      • 建立网络连接

        • 客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
      • 交换数据(可多次)

        • 连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
      • 关闭网络连接

        • 在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
    2. 服务器的编程:

      • 监听端口

        • 服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。

        • 这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。

      • 获得连接

        • 当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。

        • 一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。

      • 交换数据(可多次)

        • 服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。
      • 关闭连接

    代码实践见实验博客部分

    教材学习中的问题和解决过程

    1. 对于IP和端口仅仅有个概念,实践时不知道从哪获取

      解决过程:询问同学后知道了,IP地址可以通过命令行:ipconfig查看,端口号是自己设定的

    代码调试中的问题和解决过程(即实验问题)

    1. 在连接时客户端一方总是提示连接超时

      解决过程:在对比ipcongfig命令查看到的所有连接情况后,我们发现写错了IP地址,即连接的是WI-FI,但写的是本地连接的IP,修改后可以连接

    2. 调用RSA加密代码文件时,总是提示找不到指定文件

      解决过程:将调用方法中的文件名改为文件路径,强制读取该文件

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目 标 3000行 15篇 300小时
    第一周 70/70 2/2 14/14
    第二周 150/220 1/3 18/32
    第三周 400/620 1/4 35/67
    第四周 850/1470 1/5 30/97
    第五周 560/2030 1/6 34/131
    第六周 970/3000 2/8 39/170
    第七周 430/3430 2/10 23/193
    第八周 230/3660 2/12 27/220
    第九周 267/3927 2/14 32/252
    第十周 134/4061 2/16 26/278

    参考资料

  • 相关阅读:
    codeforces 652B z-sort(思维)
    poj 3268 Silver Cow Party(最短路)
    POJ 2243:Knight Moves(BFS)
    POJ 1107:W's Cipher(模拟)
    POJ 1008 Maya Calendar(模拟)
    Hdu3436-Queue-jumpers(伸展树)
    主席树的另一种写法
    Hdu5785-Interesting(回文串处理)
    Hdu5008-Boring String Problem(后缀数组)
    RMQ模板
  • 原文地址:https://www.cnblogs.com/schwarizard/p/5471712.html
Copyright © 2011-2022 走看看