20165324 《Java程序设计》第九周学习总结

时间:2023-01-24 23:21:23

学号 20165324 《Java程序设计》第九周学习总结

教材学习内容总结

第十三章 Java网络编程

URL类

  • 使用URL创建对象的应用程序称为客户端
  • 一个URL对象封装一个具体资源的引用
  • 一个URL对象包含最基本的三部分信息:协议,地址和资源。
  • URL类的构造方法:
    1. 该构造方法使用字符串初始化一个URL对象URL url=new URL("http://www.google.com");
    2. public URL(String protocol,String host,String file)throws MalformedURLException,该构造方法使用的协议、地址、资源分别由参数protocol、host、file指定。

InetAddress类

  • 地址的表示:
    1. 域名
    2. IP地址:java.net包中InetAddress类对象含有一个Internet主机地址的域名和IP地址。
  • 获取地址:
    1. 获取Internet上主机的地址:使用InetAddress类的静态方法getByName(String s)将一个域名或一个IP地址传给该方法的参数s,获得一个InetAddress对象,该对象含有主机地址的域名和IP地址。
    2. 此外还有两个实例方法:public String getHostName(),获取对象所含的域名;public String getHostAddress(),获取对象所含的IP地址。
    3. 获取本地机的地址:使用InetAddress类的静态方法getLocalHost()获得一个InetAddress对象,该对象含有本地机器的域名和IP地址。

套接字

  • 概述:IP地址标识Internet上的计算机,端口号标识服务器上的进程(程序)。两个程序需要通信时,可以通过使用Socket类建立套接字对象并连接在一起。
  • 客户端套接字:客户端程序使用Socket类负责建立连接到服务器的套接字对象。构造方法为:Socket(String host,int port),host为服务器的IP地址,port是一个端口号。使用try-catch语句建立连接。
  • ServerSocket对象与服务器端套接字:
    1. 为了能使客户连接到服务器,服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来。构造方法为:ServerSocket(int port),port是一个端口号,port必须和客户呼叫的端口号相同。
try {
ServerSocket severForClient = new ServerSocket(2333);
}
catch (IOException e) {}
2. 当服务器的ServerSocket对象serverForClient建立后,就可以使用方法accept()将客服端的套接字和服务器端的套接字连接起来。
try {
Socket sc = serverForCilent.accept();
}
catch (IOException e) {}
3. 接受客户的套接字连接是指severForClient(服务器端的ServerSocket对象)调用accept()方法会返回一个和客户端Socket对象相连接的Socket对象sc,sc驻留在服务器端。这个Socket对象sc调用getOutputStream()获得的输出流将指向客服端Socket对象的输入流;对象sc调用getInputStream()获得的输入流将指向客服端Socket对象的输出流。
4. 建立连接后,服务器端的套接字对象调用getInetAddress()方法可以获取一个InetAddress对象,该对象含有客服端的IP和域名,客服端同理。

基于UDP通信的基本模式

  • 将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。
  • 接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。
  • 接受数据包:DatagramSocket的另一个构造方法DatagramSocket(int port) 创建一个对象,其中的参数必须和待接收的数据包的端口号相同
  • DatagramSocket mail_in=new DatagramSocket(端口号);

    然后对象mail_in使用方法receive(DatagramPacket pack)接受数据包。
  • 用 DatagramPack类的另外一个构造方法:DatagramPack(byte data[],int length)创建一个数据包,用于接收数据包

代码托管

20165324 《Java程序设计》第九周学习总结

20165324 《Java程序设计》第九周学习总结

20165324 《Java程序设计》第九周学习总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 203/203 4/4 15/15
第二周 326/529 2/6 12/27
第三周 1000/1500 2/8 20/47
第四周 800/2300 3/11 20/67
第五周 500/2800 2/13 18/85
第六周 900/3700 2/15 15/100
第七周 1100/4800 3/18 15/115
第八周 1700/6500 1/19 18/133
第九周 1400/7900 2/21 22/155

参考资料