【JavaSE】网络编程(学习笔记)

一、网络编程概述

网络编程:网络互联的计算机实现数据交换

1、网络编程三要素

1)IP

IP:网络中设备的唯一标识

cmd -> ipconfig:查看本机ip
cmd -> ping ip地址:检查网络是否连通

127.0.0.1:回送地址,可以代表本机

2)端口

端口:设备应用程序的唯一标识

理论取值:0 ~ 65535

建议取值:1024以后,避开知名端口号

3)协议

协议:计算机网络通信和连接的规则

  1. UDP:用户数据报协议
    1. 特点:你发你的,我收我的,不区分客户端服务器
  2. TCP:传输控制协议
    1. 特点:商量好再传输
    2. 三次握手
      1. 客户端 -> 服务器:连接请求
      2. 服务器 -> 客户端:收到请求
      3. 客户端 -> 服务器:确认连接

二、UDP

1、UDP发送数据

1)步骤
// 1.创建发送端的Socket对象(DatagramSocket)
DatagramSocket ds = new DatagramSocket();
// 2.创建数据,并把数据打包
DatagramPacket dp = new DatagramPacket("wmh".getBytes(), "wmh".getBytes().length,InetAddress.getByName("192.168.1.148"),10010);
// 3.调用DatagramSocket对象的方法发送数据
ds.send(dp);
// 4.关闭发送端
ds.close();
2)DatagramSocket传输对象
  1. 无参构造:DatagramSocket()
  2. 发送数据包:public void send(DatagramPacket p)
  3. 释放资源:public void close()
3)DatagramPacket数据包

数据包构造方法:public DatagramPacket(byte buf[], int length, InetAddress address, int port)

  1. byte buf[]:字节数组
  2. length:字节长度(bus.length)
  3. InetAddress address:InetAddress.getByName(String ip)
  4. port:端口号

2、UDP接收数据

1)步骤
//1.创建接收端的Socket对象(DatagramSocket)
DatagramSocket ds = new DatagramSocket(10010);
//2.创建一个数据包,用于接收数据
DatagramPacket dp = new DatagramPacket(new byte[1024],1024);
//3.调用DatagramSocket对象的方法接收数据
ds.receive(dp);
//4.解析数据包,并把数据在控制台显示
System.out.println(new String(dp.getData(),0,dp.getLength()));
//5.释放资源
ds.close();
2)DatagramSocket传输对象
  1. 带参构造:DatagramSocket(int port)
  2. 接收数据包:public synchronized void receive(DatagramPacket p)
3)DatagramPacket数据包
  1. 空数据包构造方法:public DatagramPacket(byte buf[], int length)
  2. 获取数据:public synchronized byte[] getData()
  3. 获取数据长度:public synchronized int getLength()

三、TCP

1、TCP发送数据

1)步骤
Socket s = new Socket("192.168.1.148",10010);
OutputStream os = s.getOutputStream();
os.write("hello".getBytes());
os.close();
2)Socket流套接字

构造方法:public Socket(String host, int port)

获取输出流:public OutputStream getOutputStream()

2、TCP接收数据

1)步骤
ServerSocket ss = new ServerSocket(10010);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
System.out.println(new String(bys,0,len));
is.close();
s.close();
2)ServerSocket服务端套接字

构造方法:public ServerSocket(int port)

监听,返回Socket对象:public Socket accept()

3)Socket流套接字

获取输入流:public InputStream getInputStream()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu环境下使用nginx实现强制下载静态资源

安装Nginx sudo apt update sudo apt install nginx关闭防火墙 sudo ufw allow Nginx HTTP修改nginx配置 cd /etc/nginx/conf.d vi nginx.conf在http配置中添加(/your path/为需要下载的文件路径) server {listen 80;server_name localhost;location / {root /your path/…

convert_from_pinhole_camera_parameters 失败

函数convert_from_pinhole_camera_parameters 在0.17版本中有bug。 应该说是,直接使用pip install open3d 的0.17版本有问题,在git code中已经修复,需要下载后用pip安装。希望pip赶紧更新。。。。 参考: Fix the pybind refer…

WPS Office JS宏实现批量处理Word中的标题和正文的样式

该篇讲解下word文档中的标题和正文批量修改样式,如下图: 前面一篇已讲解了WPS Office宏编辑器操作方法,这里不细讲了,如有不清楚可以查看该篇:https://blog.csdn.net/jiciqiang/article/details/134653657?spm1001.20…

Install4J安装界面中如何使用脚本找到依赖程序XShell的安装位置

前言 写了一个工具, 使用Install4j打包, 但因为需要用到XShell, 所以希望在安装界面能够提前让用户配置好XShell的安装位置, 所以对Install4j的安装界面需要自定义, 后期在程序中直接过去安装位置就可以正常使用. 调研 和git-bash不一样, 安装版的XShell没有在注册表里存储安…

Ubuntu系统下使用apt-get安装Redis

记录一下Ubuntu20.04 64位系统下使用apt-get安装Redis 首先检查一下系统是否安装过redis whereis redismywmyw-K84HR:~$ whereis redis redis: mywmyw-K84HR:~$ 更新软件包 sudo apt-get update -y安装redis sudo apt-get install redis-server -ymywmyw-K84HR:~$ sudo apt…

数字ic设计技巧:添加debug信号

数字ic设计技巧:添加debug信号 文章目录 数字ic设计技巧:添加debug信号1. 握手方式读取数据的debug信号o_wait_read2. FIFO的空满信号3. 输入错误4. 多状态机的debug信号5. 使用FIFO记录log 在数字ic设计的过程中,我们常常通过添加一些debug信…

Java常见CodeReview及编码规范

鉴于自己的开发经验,以及常见容易产生bug及性能问题的点做个记录. 1.数据库 如果开发人员的经验不足,Java通过ORM(Mybatis)对数据库的操作的性能问题比较隐蔽.因为不压测或者异常case没发生的时候一般发现不了问题.特别是异常case发生的时候. 除配置表以外的sql都要经过expl…

LINQ【C#】

1LINQ概述: 集成查询,在对象领域和数据领域之间架起了一座桥梁。 LINQ主要由3部分组成:LINQ to ADO.NET、LINQ to Objects和LINQ to XML。其中,LINQ to ADO.NET可以分为两部分:LINQ to SQL 和LINQ to DataSet。 var…

Learning Memory-guided Normality for Anomaly Detection 论文阅读

Learning Memory-guided Normality for Anomaly Detection 摘要1.介绍2.相关工作3.方法3.1网络架构3.1.1 Encoder and decoder3.1.2 Memory 3.2. Training loss3.3. Abnormality score 4.实验5.总结总结&代码复现: 文章信息: 发表于:cvpr…

消息中间件之间的区别

一.单机吞吐量 ActiveMQ:万级,吞吐量比RocketMQ和Kafka要低了一个数量级 RabbitMQ:万级,吞吐量比RocketMQ和Kafka要低了一个数量级 RocketMQ:10万级,RocketMQ也是可以支撑高吞吐的一种MQ Kafka&#xff…

Python的requests库实现HTTPS

嘿,Python程序员们!今天我们要来点刺激的——使用Python的requests库实现HTTPS请求!是的,你没有听错,我们要一起迈入HTTPS的神秘世界! 首先,我们来了解一下HTTPS是什么。HTTPS是HTTP Secure的缩…

BUU SQL COURSE 1

四 发现有登录框,爆破半天也爆破不出来,只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参,sql注入一下试试 前三个都有回显,当id4的时候页面没有回显了,正好验证 了页面 有三个新闻 当order by 3的时…

ROS-ROS通信机制-服务通信

文章目录 一、服务通信基本知识二、自定义srv三、C实现四、Python实现 一、服务通信基本知识 服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求…

我想修改vCenter IP地址

部署vCenter Server Appliance后,您可以在vCenter修改DNS设置并选择域名服务器使用。您可以编辑vCenter Server Appliance的IP地址设置。从vSphere 6.5开始正式支持vCenter修改IP地址。因此可以更改vCenter Server Appliance的IP地址和DNS设置。 注意:更…

Vue--第六天

vuex概述: 组件通信感觉有点白雪。。。。。。。。。。 创建项目: 为了学习简介,先选几个,后续是要勾选很多的 建好后再进行组件导入 创建空仓库: 使用: 上面是store访问,下面是辅助函数的方式…

[LeetCode] 167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组 题干 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 ** 非递减顺序排列 **,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[2] ,则 …

centos 7.9 二进制部署 kubernetes v1.27.7

文章目录 1. 预备条件2. 基础配置2.1 配置root远程登录2.2 配置主机名2.3 安装 ansible2.4 配置互信2.5 配置hosts文件2.6 关闭防firewalld火墙2.7 关闭 selinux2.8 关闭交换分区swap2.9 修改内核参数2.10 安装iptables2.11 开启ipvs2.12 配置limits参数2.13 配置 yum2.14 配置…

HarmonyOS学习--TypeScript语言学习(二)

本章目录如下: 一、基础类型 二、运算符 三、变量声明 四、类型断言 五、类型推断 TypeScript支持一些基础的数据类型,如布尔型、数组、字符串等,下文举例几个较为常用的数据类型,我们来了解下他们的基本使用。 关于let 我们…

ctfshow sql 186-190

186大小写绕过 1 order by 3-- 发现union select被过滤,用大小写来绕过 1 union seleCT 1,2,database() --1 union seleCT 1,2,table_name from information_schema.tables where table_schemactfshow_web --1 union seleCT 1,2,column_name from information_schem…

Postman和Apifox针对不同环境、全局变量的使用与比较

文章目录 一、Postman1、配置环境和全局变量2、验证3、存在问题分析 二、Apifox1、配置环境和全局参数2、创建公共脚本3、测试 总结 一、Postman 1、配置环境和全局变量 在Postman的界面中,点击"Environment",添加我们需要的环境&#xff0c…