一、根据《java2实用教程》和蓝墨云学习视频学习第十三章;java
二、尝试将课本重点内容用本身的话复述手打;git
三、输入课本代码并上传码云;服务器
四、使用IDEA调试代码;网络
一个URL对象一般包含最基本的三部分信息:协议、地址、资源。多线程
13.1.1 URL的构造方法socket
public URL(String spec) throws MalformedURLException public URL(String protocol, String host,String file) throws MalformedURLException
13.1.2 读取URL中的资源分布式
InputStream openStream()
方法能够返回一个输入流,该输入流指向URL对象所包含的资源。经过该输入流能够将服务器上的资源读入到客户端。13.2.1 地址的表示学习
1.域名 例如 www.tsinghua.edu.cn 2.IP地址 例如 202.108.35.210 java.net包中的InetAddress类对象含有一个Internet主机地址的域名和IP地址,例如 www.sina.com.cn/202.108.37.40 。
13.2.2 获取地址url
1.获取Internet上主机的地址 可使用InetAddress类的静态方法getByName(String s); 得到一个InetAddress对象,该对象含有主机地址的域名和IP地址,该对象用以下格式表示它包含的信息:www.sina.com.cn/202.108.37.40 2.获取本地机的地址 咱们可使用InetAddress类的静态方法getLocalHost()得到一个InetAddress对象,该对象含有本地机的域名和IP地址。
13.3.1 套接字.net
13.3.2 客户端套接字
try{ Socket mysocket=new Socket(“http://192.168.0.78”,1880); } catch(IOException e) {}
与mysocket相关的方法 getInputStream()得到一个输入流 getOutputStream()得到一个输出流
getInputStream()
获得的输入流接到另外一个DataInputStream
数据流上getOutputStream()
获得的输出流接到另外一个DataOutputStream
数据流上13.3.3 ServerSocket对象与服务器端套接字
ServerSocket
对象,该对象经过将客户端的套接字对象和服务器端的一个套接字对象链接起来,从而达到链接的目的。ServerSocket
对象:try22{ ServerSocket serverForClient =new ServerSocket(2010); } catch(IOException e){}
accept()
将客户的套接字和服务器端的套接字链接起来,代码以下所示:try{ Socket sc= serverForClient .accept(); } catch(IOException e){}
所谓“接收”客户的套接字链接就是accept()方法会返回一个和客户端Socket对象相链接的Socket对象。
客户端的套接字得到的输入\输出流和服务器端的套接字得到的输出\输入流互相链接.
13.3.4 使用多线程技术
public void connect(SocketAddress endpoint) throws IOException
请求和参数SocketAddress指定地址的套接字创建链接。connect
方法,可使用SocketAddress
的子类InetSocketAddress
建立一个对象,InetSocketAddress
的构造方法是:InetSocketAddress(InetAddress addr, int port)
基于UDP通讯的基本模式是:
13.4.1 发送数据包
DatagramPacket
类将数据打包,即用DatagramPacket
类建立一个对象,称为数据包。用DatagramPacket的如下两个构造方法建立待发送的数据包:DatagramPacket(byte data[],int length,InetAddtress address,int port) DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
DatagramSocket
类的不带参数的构造方法:DatagramSocket()
建立一个对象,该对象负责发送数据包。例如:DatagramSocket mail_out=new DatagramSocket(); mail_out.send(data_pack);
13.4.2 接收数据包
DatagramSocket mail_in=new DatagramSocket(5666);
DatagramPack(byte data[],int length)
建立一个数据包,用于接收数据包,例如:byte data[]=new byte[100]; int length=90; DatagramPacket pack=new DatagramPacket(data,length); mail_in.receive(pack);
Java远程调用,RMI(Remote Method Invocation)是一种分布式技术,使用RMI可让一个虚拟机(JVM)上的应用程序请求调用位于网络上另外一处的JVM上的对象方法。习惯上称发出调用请求的虚拟机(JVM)为(本地)客户机,称接受并执行请求的虚拟机(JVM)为(远程)服务器。
13.6.1 远程对象及其代理
13.6.2 RMI的设计细节