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

本文深入探讨Java网络编程的关键概念,包括URL类的使用、InetAddress类的地址表示、套接字通信机制、UDP数据报的发送与接收,以及Java远程调用(RMI)的实现方法。详细解析了客户端与服务器间的数据交换流程,如URL对象的构造方法、Socket与ServerSocket类的连接原理,还有DatagramPacket类在UDP通信中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教材学习内容总结

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<128128<=a<192a>=192224.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:\ClientD:\ServerD:\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/131/1 5/5学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周140/143 1/210/15学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周276/4191/320/35java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周600/10191/430/45类和对象
第五周

150/1169

1/510/55继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周100/12691/68/63接口定义、使用方法和作用
第七周100/13691/79/72内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周150/18691/810/82java常用实用类和方法
第九周100/19691/920/102组件、容器、窗口、(如何处理事件:事件源,监视器、接口)
第十周80/20491/1010/112输入输出流和各种流的作用、构造方法
第十一周92/21411/117/119连接数据库步骤、查询、更新、添加、删除语句
第十二周104/22451/1215/134多线程的运行顺序和特点
第十三周150/23951/1312/146线程、套接字、数据报、组件面板等的结合应用

参考文献

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值