201711671235学习《java程序设计》第十三周学习总结

教材学习内容总结

1.URL类

java.net中一个重要的类,使用URL创建对象的应用程序成为客户端程序
URL对象
协议 地址 资源
Http、Ftp、File 有效IP地址或域名 主机上任何一个文件

1.1URL构造方法

a.public URL(String spec)throws MalformedURLException,使用字符串初始化对象

spec形式:例http://www.google.com

b.public URL(String protocol,String host,String file)throws MalformedURLException,其中protoco为协议,hostl为地址,file为资源

1.2读取URL中的资源

返回一个输入流、该输入流指向对象所包含的资源 客户端<-服务器

2.InetAdddress类

2.1

地址表示
例:域名:www.mosoteach.cn 例:IP地址:202.108.37.40

域名容易记忆。在连接网络输入一个主机域名后,域名服务器(DNS)负责将域名转化为IP地址,才能和主机建立连接

2.2获取地址

扫描二维码关注公众号,回复: 4426305 查看本文章

获取Internet上主机的地址

InetAddress类静态方法 实例方法
getByName(String s) pubilc String getHostName()
获取主机地址的域名和IP地址 获取InetAddress对象所含的域名
  public String getHostAddress()
  获取InetAddress对象所含的IP地址

3.套接字

3.1套接字概述

端口号:16位的0-65535之间的整数,0-1023被预先定义的服务通讯

端口号+IP地址=套接字

程序1:Socket类建立套接字对象

                                                                连接

程序2:Socket类建立套接字对象

3.2客户端套接字

Socket(String host,int port)参数host是服务器IP地址,port是一个端口号

客户端 ->输入流   ->读取 资源  <-输出流 <-服务器

服务器 ->输入流   ->读取 资源  <-输出流 <-客户端

3.3ServerSocket对象与服务器端套接字

服务器建立一个ServerSocket对象,该对象将客户端的套接字对象和服务器端的一个套接字对象连接起来

构造方法:ServerSocket(int port),port是一个端口号,和客户呼叫的端口号相同

ServerSocket对象建立之后,ServerSocket对象.accept()将客户端的套接字和服务器端的一个套接字对象连接起来

客户端 服务器
调节字对象.getIneAddress():获取一个InetAddress对象
该对象含有服务器端的IP地址和域名 该对象含有客户端的IP地址和域名

3.4使用多线程技术

计算量大的工作放在服务器端,计算量小的工作放在客户端。

使用到的类:Socket、InetAddress、InetSocketAddress

Socket创建套接字对象.connect()方法:请求和参数SocketAddress指定的地址的服务器端的套接字建立连接

public void connect(SocketAddress endpoint)

IntSocketAddress构造方法:public InetSocketAddress(InetAddress addr,int port)

4.UDP数据报

套接字(基于TCP协议的网络通信) 基于UDP(用户数据报协议)的网络信息传输方式
电话信息交互(有先来后到,知道对方是否接收到信息) 邮递信件(没有先来后到,不确定对方是否接收到信息)
  将数据打包,成为数据包,然后将数据包发往目的地;
接收发来的数据包,然后查看数据包中的内容。


4.1发送数据包
DatagramPacket类  将数据打包   DatagramPacket类创建一个发送方对象,成为数据包
创建待发送的数据包的构造方法:

DatagramPacket(byte data[],int length,InetAddress adress,int port)  DatagramPack(byte data[],int offset,int length,InetAddress adress,int port) 
 对象性质:含有data数据指定的数据;该数据包将发送到的地址是address(目标地址),端口号是port的主机上(目标端口) 该构造方法创建的发送方数据包对象含有数据data中从offset开始后的length个字节;该数据包将发送到的地址是address(目标地址),端口号是port的主机上(目标端口)
发送方对象  
调用public int getPort() 获取接收方端口
调用public InetAddress() 获取接收方地址


DatagramSocket()创建一个发送方发送对象,该对象负责发送数据包:发送方对象.send(数据包)


4.2接收数据包

DatagramScoket(int port) 创建一个接收对象,注:port与待接收的数据包的端口号相同
发送方接收对象.receive(DatagramPacket pack) 接收数据包,接收的数据包放到pack中
DatagramPack(byte data[],int length) 创建接收数据包pack


例:DatagramPacket pack=new DatagramPacket(data,length)

发送方的接收对象  
getPort() 获取接收方的端口号
getLength() 获取收到数据的字节长度
InetAddress getAddress() 获取接收方的主机(即地址)


4.3广播数据报

Internet的地址是a.b.c.d的形式

a<128 128<=a<192 a>=192 224.0.0.0-239.255.255.255
a表示网络地址,b.c.d表示主机地址

a.b表示网络地址,c.d表示主机地址

a.b.c表示网络地址,d表示主机地址 保留地址
A类地址 B类地址 C类地址 D类地址
      组播地址

要广播或接受广播的主机都必须加入同一个D类地址

6.Java远程调用

客户端 远程对象 (远程对象的)代理 存根 Remote接口
调用对象

被调用对象

客户端请求(远程)服务器上的对象->远程对象

远程对象.方法->返回必要的结果

与远程对象实现同样的接口 由RMI生成,一种特殊的字节码,存根(类)->对象《=》代理 标记远程对象(即远程对象实现该接口)
客户端 服务器 客户端   服务器
      方法:使用rmic命令生成存根 定义子接口,方便远程对象实现相应的操作
D:\Client D:\Server D:\Client   D:\Server

远程服务器端  启动注册:rmiregistry       后台启动注册:start rmiregistry

启动远程对象服务
Naming.rehind(String name,Remote obj)

name是URL格式,obj是远程对象

客户端通过name找到远程对象obj

启动客户端 程序
Naming.lookup(String name) 与上述name相同

代码学习中的问题和解决过程

客户端使用了writeUTF()方法向服务器端发送数据但客户端没反应:未解决

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 20篇 400小时 会用java语言独立设计程序
第一周 13/13 1/1  5/5 学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周 140/143  1/2 10/15 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周 276/419 1/3 20/35 java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周 600/1019 1/4 30/45 类和对象
第五周

150/1169

1/5 10/55 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周 100/1269 1/6 8/63 接口定义、使用方法和作用
第七周 100/1369 1/7 9/72 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周 150/1869 1/8 10/82 java常用实用类和方法
第九周 100/1969 1/9 20/102 组件、容器、窗口、(如何处理事件:事件源,监视器、接口)
第十周 80/2049 1/10 10/112 输入输出流和各种流的作用、构造方法
第十一周 92/2141 1/11 7/119 连接数据库步骤、查询、更新、添加、删除语句
第十二周 104/2245 1/12 15/134 多线程的运行顺序和特点
第十三周 150/2395 1/13 12/146 线程、套接字、数据报、组件面板等的结合应用

参考文献

《java2实用教程(第5版)》

猜你喜欢

转载自blog.csdn.net/weixin_40803490/article/details/84824928