目录java
第13章 Java网络编程
主要内容
URL类
InetAdress类
套接字
UDP数据报
广播数据报
Java远程调用(RMI)git
重点和难点
重点: URL的使用和套接字链接机制
难点:套接字链接机制编程
java.net
包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator)
,使用URL建立对象的应用程序称做客户端程序。public URL(String spec) throws MalformedURLException public URL(String protocol, String host,String file) throws MalformedURLException
读取URL中的资源
URL对象调用
InputStream openStream()
方法能够返回一个输入流,该输入流指向URL对象所包含的资源。经过该输入流能够将服务器上的资源读入到客户端。服务器
package inetaddressdemo; import java.net.*; /** * 演示InetAddress类的基本使用 */ public class InetAddressDemo { public static void main(String[] args) { try{ //使用域名建立对象 InetAddress inet1 = InetAddress.getByName("www.163.com"); System.out.println(inet1); //使用IP建立对象 InetAddress inet2 = InetAddress.getByName("127.0.0.1"); System.out.println(inet2); //得到本机地址对象 InetAddress inet3 = InetAddress.getLocalHost(); System.out.println(inet3); //得到对象中存储的域名 String host = inet3.getHostName(); System.out.println("域名:" + host); //得到对象中存储的IP String ip = inet3.getHostAddress(); System.out.println("IP:" + ip); }catch(Exception e){} } }
获取地址
获取Internet上主机的地址
可使用InetAddress类
的静态方法getByName(String s);
得到一个InetAddress对象,该对象含有主机地址的域名和IP地址,该对象用以下格式表示它包含的信息:
www.sina.com.cn/202.108.37.40
获取本地机的地址
咱们可使用InetAddress
类的静态方法getLocalHost()
得到一个InetAddress对象,该对象含有本地机的域名和IP地址。网络
3.套接字
IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的0~65535之间的整数。
当两个程序须要通讯时,它们能够经过使用Socket类创建套接字对象并链接在一块儿(端口号与IP地址的组合得出一个网络套接字)。socket
try{ Socket mysocket=new Socket(“http://192.168.0.78”,1880); } catch(IOException e) { }
与mysocket相关的方法
getInputStream()得到一个输入流
getOutputStream()得到一个输出流
用getInputStream()获得的输入流接到另外一个DataInputStream数据流上
用getOutputStream()获得的输出流接到另外一个DataOutputStream数据流上tcp
5.UDP数据报
基于UDP的通讯和基于TCP的通讯不一样,基于UDP的信息传递更快,但不提供可靠性保证。
基于UDP通讯的基本模式是:
将数据打包,称为数据包(比如将信件装入信封同样),而后将数据包发往目的地。
接受别人发来的数据包(比如接收信封同样),而后查看数据包中的内容。分布式
DatagramSocket mail_out=new DatagramSocket(); mail_out.send(data_pack);
Remote
接口package tcp; import java.io.*; import java.net.*; /** * echo服务器 * 功能:将客户端发送的内容反馈给客户端 */ public class SimpleSocketServer { public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; OutputStream os = null; InputStream is = null; //监听端口号 int port = 10000; try { //创建链接 serverSocket = new ServerSocket(port); //得到链接 socket = serverSocket.accept(); //接收客户端发送内容 is = socket.getInputStream(); byte[] b = new byte[1024]; int n = is.read(b); //输出 System.out.println("客户端发送内容为:" + new String(b,0,n)); //向客户端发送反馈内容 os = socket.getOutputStream(); os.write(b, 0, n); } catch (Exception e) { e.printStackTrace(); }finally{ try{ //关闭流和链接 os.close(); is.close(); socket.close(); serverSocket.close(); }catch(Exception e){} } } }
理解 URL类是对统一资源定位符的抽象,使用URL建立对象的应用程序称做客户端程序。 网络套接字是基于TCP协议的有链接通讯,套接字链接就是客户端的套接字对象和服务器端的套接字对象经过输入、输出流链接在一块儿。 基于UDP的通讯和基于TCP的通讯不一样,基于UDP的信息传递更快,但不提供可靠性保证。 设计广播数据报网络程序时,必须将要广播或接收广播的主机加入到同一个D类地址。D类地址也称做个组播地址。 RMI是一种分布式技术,使用RMI可让一个虚拟机(JVM)上的应用程序请求调用位于网络上另外一处的JVM上的对象方法RMI是一种分布式技术。
代码托管学习