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

本文深入探讨了Java网络编程的核心概念和技术,包括URL类、InetAddress类、套接字编程、UDP数据报以及广播数据报的实现。文章详细介绍了如何使用URL类进行资源定位,InetAddress类处理IP地址,Socket和ServerSocket类进行TCP通信,以及DatagramSocket类进行UDP通信。

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

第13章 Java网络编程 

13.1  URL

  • URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序。
  • 一个URL对象通常包含最基本的三部分信息:协议、地址、资源。

URL构造方法

  • public URL(String spec) throws MalformedURLException
  • public URL(String protocol, String host,String file) throws MalformedURLException

URL对象调用

  • InputStream openStream()

方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。

13.2   InetAdress

Internet上的主机有两种方式表示地址:

1.域名

2.IP地址

13.2.2   获取地址

  • 可以使用InetAddress的静态方法getByName(String s);
  • 获得一个InetAddress对象,该对象含有主机地址的域名和IP地址,该对象用如下格式表示它包含的信息:

  www.sina.com.cn/202.108.37.40

  • 获取本地机的地址

我们可以使用InetAddress的静态方法getLocalHost()获得一个InetAddress对象,该对象含有本地机的域名和IP地址。

13.3   套接字

  • IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的0~65535之间的整数。
  • 当两个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。

客户端套接字

  • 客户端的程序使用Socket类建立负责连接到服务器的套接字对象。
  • 建立连接到服务器的套接字对象:

    try{  Socket mysocket=new Socket(“http://192.168.0.78”,1880);  }

    catch(IOException e) {  }

  • mysocket相关的方法
  1. getInputStream()获得一个输入流
  2. getOutputStream()获得一个输出流
  3. getInputStream()得到的输入流接到另一个DataInputStream数据流上
  4. getOutputStream()得到的输出流接到另一个DataOutputStream数据流上

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

  • 服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。

 

  • 建立ServerSocket对象:

     try{  ServerSocket  serverForClient =new ServerSocket(2010); }

     catch(IOException e){}

  •  

使用方法accept()将客户的套接字和服务器端的套接字连接起来,代码如下所示:

      try{  Socket sc= serverForClient .accept();

        }

     catch(IOException e){}  

所谓“接收”客户的套接字连接就是accept()方法会返回一个和客户端Socket对象相连接的Socket对象。

客户端的套接字获得的输入\输出流和服务器端的套接字获得的输出\输入流互相连接.

13.3.4  使用多线程技术

  • 为了防止堵塞线程,服务器端收到一个客户的套接字后,就应该启动一个专门为该客户服务的线程。
  • 使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用

public void connect(SocketAddress endpoint) throws IOException

请求和参数SocketAddress指定地址的套接字建立连接。

  • 为了使用connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,InetSocketAddress的构造方法是:

InetSocketAddress(InetAddress addr, int port)

13.4    UDP

  • 基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。
  • 基于UDP通信的基本模式是:
  1. 将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。
  2. 接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。

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    接收数据包

1. 首先用DatagramSocket的另一个构造方法DatagramSocket(int port) 创建一个对象,其中的参数必须和待接收的数据包的端口号相同。例如,如果发送方发送的数据包的端口是5666,那么如下创建DatagramSocket对象:

DatagramSocket mail_in=new DatagramSocket(5666);

2. 然后对象mail_in使用方法receive(DatagramPacket pack)接受数据包。

3.DatagramPack类的另外一个构造方法:  DatagramPack(byte data[],int length)创建一个数据包,用于接收数据包

该数据包pack将接收长度是length字节的数据放入data。

例如

 byte data[]=new byte[100];
	 int length=90;
	       DatagramPacket pack=new DatagramPacket(data,length);
     mail_in.receive(pack); 

13.5    广播数据报

  • 广播数据报涉及到地址和端口。
  • 广播数据报是一种较新的技术,要广播或接收广播的主机都必须加入到同一个D类地址。   

总结

  • 理解 URL类是对统一资源定位符的抽象,使用URL创建对象的应用程序称作客户端程序。
  • 网络套接字是基于TCP协议的有连接通信,套接字连接就是客户端的套接字对象和服务器端的套接字对象通过输入、输出流连接在一起。
  • 基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。
  • 设计广播数据报网络程序时,必须将要广播或接收广播的主机加入到同一个D类地址。D类地址也称作个组播地址。
  • RMI是一种分布式技术,使用RMI可以让一个虚拟机(JVM)上的应用程序请求调用位于网络上另一处的JVM上的对象方法RMI是一种分布式技术。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值