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

    学习内容总结

    网络编程

    (1)网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据。
    (2)程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴。
    (3)在发送和接收数据时,大部分的程序设计语言都设计了专门的API实现这些功能,程序员只需要调用即可。

    计算机网络概述

    (1)路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤、网线等连接将设备连接起来,从而形成了一张巨大的计算机网络。
    (2)网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机。
    (3)IP地址:为了能够方便的识别网络上的每个设备,网络中的每个设备的唯一的数字标识。现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4个0-255之间的数字组成,例如10.0.120.34。IP地址可能是固定的,例如网络上各种各样的服务器;也可以是动态的,例如使用ADSL拨号上网的宽带用户。
    (4)域名(Domain Name):例如sohu.com等。一个IP地址可以对应多个域名,一个域名只能对应一个IP地址。
    (5)DNS服务器:在网络中传输的数据,全部是以IP地址作为地址标识,所以在实际传输数据以前需要将域名转换为IP地址,实现这种功能的服务器称之为DNS服务器,也就是通俗的说法叫做域名解析。
    (6)端口(port):让一个计算机可以同时运行多个网络程序,在同一个计算机中每个程序对应唯一的端口。 在硬件上规定,端口的号码必须位于0-65535之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。

    网络通讯方式

    在现有的网络中,网络通讯的方式主要有两种:
    (1)TCP(传输控制协议)方式:进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。
    (2)UDP(用户数据报协议)方式:进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。

    网络编程步骤

    (1)客户端网络编程步骤

    1、建立网络连接:在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
    2、交换数据:连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。
    3、关闭网络连接:在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。
    (2)服务器端网络编程步骤

    1、 监听端口:服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。
    2、 获得连接:当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
    3、 交换数据:服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。当然,服务器端的数据交换也是可以多次进行的。在数据交换完成以后,关闭和客户端的连接。
    4、 关闭连接:当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。

    Java网络编程技术

    InetAddress类功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部。代码练习如下:

    
    package inetaddressdemo;
    import java.net.*;
    
    public class InetAddressDemo {
             public static void main(String[] args) {
                       try{
                                
                                InetAddress inet1 = InetAddress.getByName("www.163.com");
                                System.out.println(inet1);
                               
                                InetAddress inet2 = InetAddress.getByName("127.0.0.1");
                                System.out.println(inet2);
                                
                                InetAddress inet3 = InetAddress.getLocalHost();
                                System.out.println(inet3);
                               
                                String host = inet3.getHostName();
                                System.out.println("域名:" + host);
                              
                                String ip = inet3.getHostAddress();
                                System.out.println("IP:" + ip);
                       }catch(Exception e){}
             }
    }
    

    本周代码托管截图

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第一周 100/100 2/2 10/10
    第二周 150/250 1/3 10/20
    第三周 100/350 1/4 10/30
    第四周 320/670 1/5 30/60
    第五周 700/1370 1/6 30/90
    第六周 700/2070 2/8 30/120
    第七周 700/2770 2/10 30/150
    第八周 500/3270 2/12 30/150
    第九周 200/3470 2/14 15/165
    第十周 250/3720 2/16 20/185
  • 相关阅读:
    【leetcode】二叉搜索树中的众数
    【leetcode】和为零的N个唯一整数
    【leetcode】统计位数为偶数的数字
    【leetcode】寻找数组的中心索引
    【leetcode】找出给定方程的正整数解
    【leetcode】寻找比目标字母大的最小字母
    【leetcode】找出井字棋的获胜者
    输出0~N之间的素数
    判断正整数是否是素数(数据结构课后练习题2.13a)
    052-85
  • 原文地址:https://www.cnblogs.com/20145122chengzhiyin/p/5470138.html
Copyright © 2011-2022 走看看