教材学习内容总结
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获取地址
获取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版)》