20145216史婧瑶《Java程序设计》第10周学习总结
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 |
学习了网络编程的相关知识 |
参考资料
最新文章
- layer.js中layer.tips
- windows下用QTwebkit解析html
- codeforces 27E Number With The Given Amount Of Divisors
- Ajax基础之封装3
- 【crunch bang】文件管理器-thunar
- JUnit 简单的使用 (学习转载)
- async/await的实质理解
- java多线程基础知识
- Hadoop学习笔记3---安装并运行Hadoop
- JavaScript学习心得(一)
- Android 解决ScrollView下嵌套ListView进页面不在顶部的问题
- java 位运算权限管控(转载)
- OFBIZ分享:利用Nginx +Memcached架设高性能的服务
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)(转)
- Process 模块的方法
- Linux 进程管理 笔记
- Attach()和Detach()函数
- .net Parallel并行使用
- 整数(质因子)分解(Pollard rho大整数分解)
- Tinyos Makerules解读