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

教材学习内容总结

网络编程

一、网络概述

  • 网络编程就是两个或多个设备(程序)之间的数据交换。

  • 识别网络上的每个设备:①IP地址②域名(Domain Name)。一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。

  • DNS服务器(域名解析):在实际传输数据以前需要将域名转换为IP地址。

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

  • C/S结构:网络编程的结构被称作客户端/服务器结构,也叫做Client/Server结构。

  • B/S结构:使用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做Browser/Server结构。B/S结构其实也就是一种特殊的C/S结构。

  • P2P程序:P2P程序中既包含客户端程序,也包含服务器端程序,是一种特殊的程序。

  • 协议(Protocol):在实际进行数据交换时,为了让接收端理解该数据,计算机比较笨,什么都不懂的,那么就需要规定该数据的格式,这个数据的格式就是协议。那么如何来编写协议格式呢?答案是随意。只要按照这种协议格式能够生成唯一的编码,按照该编码可以唯一的解析出发送数据的内容即可。也正因为各个网络程序之间协议格式的不同,所以才导致了客户端程序都是专用的结构。

  • 在现有的网络中,网络通讯的方式主要有两种: ①TCP(传输控制协议)方式 ②UDP(用户数据报协议)方式

二、网络编程技术

  • 客户端的编程主要由三个步骤实现:

    1、建立网络连接:在建立网络连接时需要指定连接到的服务器的IP地址和端口号。(出现重复)
    
    2、交换数据:交换数据严格按照请求响应模型进行。
    
    3、关闭网络连接。
  • 服务器端的编程是由四个步骤实现,依次是:

    1、监听端口:这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器
    端程序的IP地址。 2、 获得连接:服务器端和客户端也通过该连接进行数据交换。一般获得连接时,需要开启专门的线程处理该连
    接,每个连接都由独立的线程实现。 3、 交换数据。 4、 关闭连接。
  • InetAddress类:该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

  • TCP方式的网络编程实现时,以java.net.Socket类代表客户端连接,以java.net.ServerSocket类代表服务器端连接。由于高度的封装,程序员实际编程时,只需要指定IP地址和端口号码就可以建立连接了。一方面简化了Java语言网络编程的难度,另外也使得Java语言进行网络底层系统编程很困难,具体点说,Java语言无法实现底层的网络嗅探以及获得IP包结构等信息。

  • 实现服务器端监听的代码为:

    ServerSocket ss = new ServerSocket(10000);
  • 实现UDP方式的编程,包含客户端网络编程和服务器端网络编程,主要由两个类实现,分别是:

    1、DatagramSocket:实现“网络连接”,包括客户端网络连接和服务器端网络连接。DatagramSocket实现的
    就是发送数据时的发射器,以及接收数据时的监听器的角色。类比于TCP中的网络连接,该类既可以用于实现客户
    端连接,也可以用于实现服务器端连接。 2、DatagramPacket:实现对于网络中传输的数据封装,该类的对象代表网络中交换的数据。在UDP方式的网络
    编程中,无论是需要发送的数据还是需要接收的数据,都必须被处理成DatagramPacket类型的对象,该对象中
    包含发送到的地址、发送到的端口号以及发送的内容等。和TCP方式的网络传输相比,IO编程在UDP方式的网络编
    程中变得不是必须的内容,结构也要比TCP方式的网络编程简单一些。

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

问题:

什么是网络协议?

解决过程:

通过学习老师博客中给出的资料链接,总结出以下解释:

  • 网络协议是指对于网络中传输的数据格式的规定。

  • 在网络编程中,对于同一个网络程序来说,一般都会涉及到两个网络协议格式:客户端发送数据格式和服务器端反馈数据格式,在实际设计时,需要一一对应。

  • 由于各种网络程序使用不同的协议格式,所以不同网络程序的客户端之间无法通用。而对于常见协议的格式,例如HTTP(Hyper Text Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等等,都有通用的规定。

  • 最后,对于一种网络程序来说,网络协议格式是该程序最核心的技术秘密,因为一旦协议格式泄漏,则任何一个人都可以根据该格式进行客户心端的编写,这样将影响服务器端的实现,也容易出现一些其它的影响。

代码托管截图

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4500行 30篇 350小时 能将java运用自如 
第一周 150/150 2/2 15/15 学习了与java相关的基础知识 
第二周 200/350 1/3 20/35

学习了java的基本语法

 第三周  450/800  1/4 25/60 

学习了对象和封装的相关知识

 第四周 687/ 1487  1/5 30/90 

学习了继承与接口的相关知识

 第五周 803/2290    1/6    30/120 

学习了异常处理以及Collection与Map的相关知识

 第六周  910/3200 2/8  40/160 

学习了输入、输出和线程的相关知识

 第七周  350/3550 2/10  30/190 

学习了时间与日期的相关知识

 第八周 350/3900  2/12   30/220

学习了通用API的相关知识

 第九周 400/4300  2/14  30/250

学习了整合数据库的相关知识

 第十周 300/4600  2/16   30/280

学习了网络编程的相关知识

参考资料

最新文章

  1. layer.js中layer.tips
  2. windows下用QTwebkit解析html
  3. codeforces 27E Number With The Given Amount Of Divisors
  4. Ajax基础之封装3
  5. 【crunch bang】文件管理器-thunar
  6. JUnit 简单的使用 (学习转载)
  7. async/await的实质理解
  8. java多线程基础知识
  9. Hadoop学习笔记3---安装并运行Hadoop
  10. JavaScript学习心得(一)
  11. Android 解决ScrollView下嵌套ListView进页面不在顶部的问题
  12. java 位运算权限管控(转载)
  13. OFBIZ分享:利用Nginx +Memcached架设高性能的服务
  14. grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)(转)
  15. Process 模块的方法
  16. Linux 进程管理 笔记
  17. Attach()和Detach()函数
  18. .net Parallel并行使用
  19. 整数(质因子)分解(Pollard rho大整数分解)
  20. Tinyos Makerules解读

热门文章

  1. 【BZOJ2726】[SDOI2012]任务安排 斜率优化+cdq分治
  2. ps -aux | egrep 多个值
  3. 160329(二)、web.xml配置详解
  4. Java 调用并执行cmd命令
  5. hook Extending the Framework Core
  6. docker remote api enable in ubuntu
  7. javaweb前后台中文参数乱码
  8. 原!linux脚本 expect命令 完成 输入密码交互 进行scp远程文件拷贝
  9. Linux 下线程的理解
  10. C#线程池ThreadPool