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>
目录
相关文章
|
8月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
404 1
|
8月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
379 1
|
8月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
656 0
|
9月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
10月前
|
JSON 移动开发 网络协议
Java网络编程:Socket通信与HTTP客户端
本文全面讲解Java网络编程,涵盖TCP与UDP协议区别、Socket编程、HTTP客户端开发及实战案例,助你掌握实时通信、文件传输、聊天应用等场景,附性能优化与面试高频问题解析。
|
11月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
702 2
|
网络协议 Java API
|
缓存 网络协议 Java