20145315 《Java程序设计》第十周学习总结

教材学习内容总结

网络概述

  1. 为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址。IP地址实际上是一种地理标识

  2. IP地址和域名很好的解决了在网络中找到一个计算机的问题,但是为了让一个计算机可以同时运行多个网络程序,就引入了另外一个概念——端口(port)。计算机上可以并发运行多个网络程序,而不会在互相之间产生干扰。

  3. 网络通讯的过程:“请求-响应”模型。

    第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。

  4. C/S结构:分别开发客户端和服务器端
    B/S结构:使用通用的客户端,只开发服务端

  5. 协议: 规定数据的格式,这个数据的格式就是协议。

  6. 在现有的网络中,网络通讯的方式主要有两种:
  • TCP(传输控制协议)方式:较可靠

  • UDP(用户数据报协议)方式:可能失败丢失

网络编程技术

  1. 客户端步骤:
  • 建立网络连接
  • 交换数据
  • 关闭网络连接
  1. 服务器端步骤:
  • 监听端口
  • 获得连接
  • 交换数据
  • 关闭连接
  1. Java网络编程技术
    InetAddress类:该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。

  2. 客户端编程
  • 第一步:建立连接: Socket类型的对象代表网络连接 (TCP编程)如, Socket socket1 = new Socket(“192.168.1.103”,10000);

  • 第二步:获得输出流和输入流:遵循“请求-响应”模型的规定,先向输出流中写入数据,这些数据会被系统发送出去,然后在从输入流中读取服务器端的反馈信息,这样就完成了一次数据交换过程,当然这个数据交换过程可以多次进行。

  • 第三步:最后当数据交换完成以后,关闭网络连接,释放网络连接占用的系统端口和内存等资源,完成网络操作 socket1.close();

  1. 服务器编程
  • 服务器端监听的代码为: ServerSocket ss = new ServerSocket(10000);
  • 获得连接:当有客户端连接到达时,建立一个和客户端连接对应的Socket连接对象,实现获得连接的代码是 Socket socket = ss.accept();
  • 在服务器端通信完成以后,关闭服务器端连接。实现的代码为 ss.close();
  1. 复用Socket连接。
  2. 服务器端支持多个客户端同时工作。

MulThreadSocketServer类实现服务器端控制,实现接收客户端连接,然后开启专门的逻辑线程处理该连接,LogicThread类实现对于一个客户端连接的逻辑处理,将处理的逻辑放置在该类的run方法中。

  1. UDP
  • DatagramSocket类实现“网络连接” DatagramSocket ds = new DatagramSocket();
  • DatagramPacket类实现对于网络中传输的数据封装,包含发送方的地址、端口号等信息,也包含数据的内容。
  • 按照UDP协议的约定,在进行数据传输时,系统只是尽全力传输数据,但是并不保证数据一定被正确传输,如果数据在传输过程中丢失,那就丢失了。

    网络协议

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

  1. 考虑客户端发送数据格式和服务器端反馈数据格式一一对应。
  2. 由于各种网络程序使用不同的协议格式,所以不同网络程序的客户端之间无法通用。
  3. 网络协议是网络程序的核心,所以在实际开始进行网络编程时,设计一个良好的协议格式也是必须进行的工作。

    其他(感悟、思考等,可选)

参考资料

最新文章

  1. HDU 1231 最大连续子序列(水题)
  2. ubuntu上mysql服务器安装后只能本地连接不能远程连接的问题
  3. 解决Apache CXF 不支持传递java.sql.Timestamp和java.util.HashMap类型问题
  4. Debugging a Parallel Application
  5. gulp分享文档
  6. C# 读取EXCEL数据
  7. ReSharper 8.1支持Visual Studio 2013的特色——超强滚动条
  8. gsoap:实现线程池处理时获取到客户端的ip
  9. 博客已经迁移到 http://imbotao.top 也会同步到这儿
  10. 2017-07-04(sudo wc sort)
  11. 前端可视化项目流程,涉及three.js(webGL),3DMax技术,持续更新
  12. sys os
  13. node.js中对 redis 的安装和基本操作
  14. freopen
  15. [zz] MATLAB工具箱介绍
  16. std::set
  17. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能
  18. Java Activiti 流程审批 后台框架源码 springmvc SSM 工作流引擎
  19. js控制iframe的刷新(页面局部刷新)
  20. 【spring源码学习】spring的远程调用实现源码分析

热门文章

  1. JS 添加js节点
  2. shell 强大的awk
  3. ajax操作的链式写法
  4. Fragments (官方文档中文版)
  5. Cookie/Session机制详解 <转>
  6. Java初学者笔记四:按行读写文件和输入处理
  7. linux 中 ll 命令显示 的大小 是什么单位的啊?
  8. 您需要安装旧 Java SE 6 运行环境才能打开“Eclipse”。
  9. SSL安装方法一:在Windows Server 2008安装SSL证书(IIS 7.0)
  10. Linux系统下 Supervisor 安装搭建