java 网络编程(Socket) TCP/UDP 总结案例(1)

简介: java 网络编程(Socket) TCP/UDP 总结案例

网络编程:关注的是底层的数据传输

网页编程:数据的展示


1、基本概念


一、网络:将不同的计算机连接在一起局域网 城域网 互联网


二、地址:Ip地址确定网络上的绝对的地址位置   房子的地址


三、端口号(相当于房门):区分计算机上的软件 相当于房门两个字节0~65535 共65536个


1、 同一个协议下,端口号不能重复,不同的协议下可以重复


2、 1024以下的端口不要使用 80-->http 21-->ftp


四、资源定位 URL 统一资源定位 URI:统一资源


五、数据的传输


1、 协议:TCP和 UDP协议(重点的)


1)、TCP(transfer control protocol):必须先建立连接 先连接在通信 电话 类似于三次握手 面向连接 安全可靠 效率相对低下



2)、UDP(UserDatagramProtocol):类似于发短信 非面向连接 效率高



现在一般是将两者结合使用,底层一些不重要的数据使用UDP传输


2、 传输


1、 先封装


2、 后拆分


image.png




3、数据封装拆分



1、 InetAddress InetSocketAddress


2、 URL


3、 TCP:serverSocket(建立在服务器上)  Socket(建立在客户端上)


4、 UDP: DatagramSocket DatagramPacket


1、InetAddress:封装IP及DNS


方法:


getHostAddress() 返回ip地址


getHostName() 返回域名|本机为计算机名


InetAddress.getLocalHost();//本机


InetAddress.getByName(“IP地址|域名”);


2、InetSocketAddress:封装端口


1):创建对象:


InetSocketAddress(String hostname,int port)


InetSocketAddress(InetAddress addr,intport)


2):方法:


getAdddress()


getHostName()


getPort()

<span style="font-size:18px;">package com.net.ip;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
 * 没有封装端口
 * @author lyy
 *
 */
public class InetDemo1 {
  public static void main(String[] args) throws UnknownHostException {
    //使用getLoaclHost方法创建InetAddress对象
    InetAddress addr = InetAddress.getLocalHost();
    System.out.println(addr.getHostAddress());//返回ip地址
    System.out.println(addr.getHostName());//输入计算机名
    //根据域名得到InetAddress对象
    addr = InetAddress.getByName("www.163.com");
    System.out.println(addr.getHostAddress());//返回服务器的ip地址61.163.117.65
    System.out.println(addr.getHostName()); //输出 www.163.com
    //根据ip得到InetAddress对象
    addr = InetAddress.getByName("61.163.117.65");//如果ip地址存在而且DNS帮你解析了,那么getHostName()这个方法返回的就是www.163.com ,否则输出Ip地址
    System.out.println(addr.getHostAddress());//返回163的服务器的ip
    System.out.println(addr.getHostName());//输入Ip而不是域名,如果这个Ip地址不存在
  }
  </span>
}
<span style="font-size:18px;">package com.net.ip;
import java.net.*;
/**
 * 封装端口:在InetAddress基础上+端口
 * @author lyy
 *
 */
public class InetSocketDemo1 {
    public static void main(String[] args) throws UnknownHostException {
      InetSocketAddress address = new InetSocketAddress("127.0.0.1", 9999);
      address= new InetSocketAddress(InetAddress.getByName("127.0.0.1"), 9999);
      System.out.println(address.getHostName());
      System.out.println(address.getPort());
      InetAddress addr = address.getAddress();
      System.out.println(addr.getHostAddress());//返回ip地址
      System.out.println(addr.getHostName());//输入计算机名
    }
}</span>


3、网络爬虫原理

URI(Uniform resource identifier) 统一资源标识符,用唯一的标识一个资源


URL(Uniform resource Locator)统一资源定位器,他是一种具体的URI


四部分组成:协议存放资源的主机域名端口 资源文件名(/)


URL:


一、创建


URI(String str)//绝对路径构建


URI(URL context,String spec)//相对路径构建


二、方法:


System.out.println("协议:"+url.getProtocol());


System.out.println("域名:"+url.getHost());


System.out.println("端口:"+url.getPort());


System.out.println("资源:"+url.getFile());


System.out.println("相对路径资源:"+url.getPath());


System.out.println("锚点:"+url.getRef());//锚点


System.out.println("参数:"+url.getQuery());//参数:存在锚点回返Null 如果不存在返回参数

<span style="font-size:18px;">package com.net.url;
import java.net.*;
public class URLDemo1 {
  public static void main(String[] args) throws MalformedURLException {
    //绝对路径构建
    URL url = new URL("http://www.baidu.com:80/index.html#aa?uname=lyy");
    System.out.println("协议:"+url.getProtocol());
    System.out.println("域名:"+url.getHost());
    System.out.println("端口:"+url.getPort());
    System.out.println("资源:"+url.getFile());
    System.out.println("相对路径资源:"+url.getPath());
    System.out.println("锚点:"+url.getRef());//锚点
    System.out.println("参数:"+url.getQuery());//参数 :存在锚点 返回Null 如果不存在返回参数
    //相对路径构建
    url = new URL("http://www.baidu.com:80/a/");
    url = new URL(url,"b.txt");//相对路径
    System.out.println(url.toString());
  }
}<strong>
</strong></span>
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
29天前
|
移动开发 网络协议 安全
网络面试题:什么是 TCP/IP?
网络面试题:什么是 TCP/IP?
43 0
网络面试题:什么是 TCP/IP?
|
30天前
|
监控 负载均衡 网络协议
TCP重传与超时机制:解锁网络性能之秘
TCP重传与超时机制:解锁网络性能之秘
58 0
|
2天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
4天前
|
JavaScript Java 测试技术
基于Java的网络游戏交易系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络游戏交易系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
4天前
|
SQL 安全 Java
Java安全编程:防范网络攻击与漏洞
【4月更文挑战第15天】本文强调了Java安全编程的重要性,包括提高系统安全性、降低维护成本和提升用户体验。针对网络攻击和漏洞,提出了防范措施:使用PreparedStatement防SQL注入,过滤和转义用户输入抵御XSS攻击,添加令牌对抗CSRF,限制文件上传类型和大小以防止恶意文件,避免原生序列化并确保数据完整性。及时更新和修复漏洞是关键。程序员应遵循安全编程规范,保障系统安全。
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
11天前
|
网络协议 安全 网络性能优化
|
21天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
20 0
|
29天前
|
网络协议 安全 Java
Java网络编程
Java网络编程
|
30天前
|
网络协议 算法 Linux
探索TCP状态机之旅:发现网络连接的生命周期与神秘魅力
探索TCP状态机之旅:发现网络连接的生命周期与神秘魅力
67 0