狂神java学习笔记——网络编程

IP

ip地址:

  • 在计算机网络中,唯一确定一台计算机
  • 127.0.0.1:本机回环地址

ip地址的分类(IPV4):

  • 分为A类、B类、C类地址,其区别在于A、B、C类子网的个数和所包含的地址个数不同。
  • 局域网网段10.0.0.0~10.255.255.255172.16.0.0~172.31.255.255192.168.0.0~192.168.255.255不会在公网中出现
  • 以及一些预留地址
  • 在对应子网中,第一个ip地址表示整个子网的地址,最后一个ip是这个子网的广播地址
//测试
public class Test1  {public static void main(String[] args) throws UnknownHostException {//使用ipInetAddress inetAddress1=InetAddress.getByName("127.0.0.1");System.out.println(inetAddress1);//使用域名InetAddress inetAddress2=InetAddress.getByName("www.csdn.net");System.out.println(inetAddress2);//LocalHost获取本机回环ip(127.0.0.1)InetAddress inetAddress3=InetAddress.getLocalHost();System.out.println(inetAddress3);//System.out.println(inetAddress2.getAddress());//System.out.println(inetAddress2.getCanonicalHostName());System.out.println(inetAddress2.getHostAddress());//ipSystem.out.println(inetAddress2.getHostName());//域名}
}

端口

  • 不同进程监听不同的端口
  • UDP和TCP协议端口号独立,可以同时有UDP和TCP的80端口
  • 端口号0~65535
  • 其中1023以内端口为约定端口 比如80端口为http服务
  • 1024~49151,分配用户或者应用程序
  • 剩下是动态、私有端口
netstat -ano #查看所有端口
netstat -ano|findstr "XXXXX" #查看指定的端口
tasklist|findstr "XXXX" #查看指定端口发进程

网络通信协议

  • 各个端间通信的标准,使得接收方和发送方对数据没有歧义,同时规定端间数据传输的速率、包/帧结构、实现传输控制等。
  • 主要:TCP/IP协议簇

TCP

三次握手 四次挥手,面向连接相对稳定,

客户端

  • 连接服务器Socket
  • 发送消息

服务器

  • 建立服务端口ServerSocket
  • 等待用户的连接accept
  • 接受用户的消息
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;//客户
public class Test3 {public static void main(String[] args) throws IOException {//要知道服务器地址InetAddress sAddress=InetAddress.getByName("127.0.0.1");//端口号int port=9999;//创建socket连接Socket socket=new Socket(sAddress,port);//发送消息,IO流OutputStream stream=socket.getOutputStream();stream.write("hello".getBytes());//关闭资源stream.close();socket.close();}
}
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;//服务
public class Test4 {public static void main(String[] args) throws IOException {//需要有一个地址ServerSocket serverSocket=new ServerSocket(9999);//等待客户端连接Socket socket=serverSocket.accept();//读取消息InputStream is=socket.getInputStream();//管道流ByteArrayOutputStream baos=new ByteArrayOutputStream();byte[] buffer =new byte[1024];int len;while ((len=is.read(buffer))!=-1){baos.write(buffer,0,len);}System.out.println(baos.toString());baos.close();is.close();socket.close();serverSocket.close();}
}

UDP

  • 不用建立连接,但是需要地址
import java.net.*;//不需要连接服务器
public class Test5 {public static void main(String[] args) throws Exception {//建立SocketDatagramSocket socket=new DatagramSocket();//打包数据包String msg="hello";new DatagramPacket(msg.getBytes(),0,msg.getBytes().length);//发送InetAddress address=InetAddress.getByName("127.0.0.1");int post=9090;DatagramPacket packet=new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,address,post);socket.send(packet);socket.close();}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;//服务器端,等待客户端的数据包
public class Test6 {public static void main(String[] args) throws Exception {//开放端口DatagramSocket socket=new DatagramSocket(9090);//接受数据包byte[] buffer=new byte[1024];DatagramPacket packet=new DatagramPacket(buffer,0,buffer.length);socket.receive(packet);//阻塞接受System.out.println(new String(packet.getData()));//关闭连接socket.close();}
}

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

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

相关文章

IPC之五:使用 System V 信号量集解决经典的‘哲学家就餐问题‘

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本文主要介绍信号量集(Semaphore Sets),尽管信号量集被认为是 IPC 的一种方式,但实际上通常把信号量集用于进程间同步或者资源访问互斥,信号量集和共享内存(Shared …

ABAP 选择屏幕创建按钮,并执行

1.在选择屏幕上声明按钮2.在 INITIALIZATION 中定义按钮的文本和图标3.在AT SELECTION-SCREEN 模块中响应按钮 *&---------------------------------------------------------------------* *& Report ZTEST_CESHI *&------------------------------------------…

系列学习前端之第 2 章:一文精通 HTML

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料: 链接: https://pan.baidu.com/s/1-vY2anBdrsBSwDZfALZ6FQ 提取码: 6666 HTML 全称:HyperText Markup Language(超文本标记语言) 1、 HTML 标签 1. 标签又称元素&#…

PR剪辑视频素材|真实胶片特效转场PR项目模板文件

Premiere转场模板,8个真实胶片特效转场PR项目模板视频素材。可以编辑和自定义媒体占位符。在视频的开头、中间和结尾使用。包含视频教程。 适用软件:PR2023及更新版本 | 分辨率:38402160 (4K) | 文件大小:16.43MB | 无需插件 来自…

AI并行计算:CUDA和ROCm

1 介绍 1.1 CUDA CUDA(Compute Unified Device Architecture)是Nvidia于2006年推出的一套通用并行计算架构,旨在解决在GPU上的并行计算问题。其易用性和便捷性能够方便开发者方便的进行GPU编程,充分利用GPU的并行能力&#xff0…

如何使用ArcGIS Pro制作类似CAD的尺寸注记

经常使用CAD制图的朋友应该比较熟悉CAD内的尺寸标注,这样的标注看起来直观且简洁,那么在ArcGIS Pro内能不能制作这样尺寸注记呢,答案是肯定的,这里为大家介绍一下制作的方法,希望能对你有所帮助。 数据来源 本教程所…

当前流行技术栈一览列表

每项任务的最佳技术: Web api:NextJS(Spring Boot 紧随其后)SQL 数据库:PostgresPostgresNoSQL 数据库:DynamoDB图数据库:Neo4j前端网页:React前端移动:React Native&am…

OpenGL ES 帧缓冲对象介绍和使用示例

一、介绍 1. 帧缓冲对象 默认情况下,OpenGL渲染的目标是屏幕,但如果你不想直接渲染到屏幕上,还需要对渲染结果做某些后期处理、渲染到纹理、阴影映射等操作,便可以使用帧缓冲对象,实现离屏渲染。 帧缓冲对象&#x…

JSON字符串转泛型对象

JSON字符串转泛型对象 以下问题只仅限于博主自身遇到&#xff0c;不代表绝对出现问题 相关类展示&#xff1a; 参数基类 public class BaseParams { }基类 public abstract class AbstractPush<Params extends BaseParams> {protected abstract void execute(Params…

Java -jar参数详解

java -jar 命令用于执行打包成可执行 JAR 文件的 Java 应用程序。在运行时&#xff0c;你可以通过命令行传递参数给这个应用程序。 1. -jar 参数&#xff1a; 说明&#xff1a; 指定要执行的 JAR 文件。示例&#xff1a;java -jar your-application.jar 2. -D 参数&#xff…

怎么选护眼灯?考公必备护眼灯推荐

随着现在的近视问题受到越来越广泛的关注&#xff0c;各种护眼产品的需求量也一直在快速增加&#xff0c;其中最受广大家长、学生党欢迎的还是护眼台灯。因为专业的护眼台灯不仅可以补充我们夜晚工作、学习时不足的光亮&#xff0c;避免眼睛长时间处于昏暗的环境导致疲劳。 而…

018 OpenCV 人脸检测

目录 一、环境 二、分类器原理 2.1、概述 2.2、工作原理 三、人脸检测代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、分类器原理 CascadeClassifier是OpenCV&#xff08;开源计算机视觉库&#xff09;中的一个强大的类…

day01十五模拟第二期

2 2——608#include <stdio.h> #include <math.h>int main(int argc, const char * argv[]) {int res1;for(int i1;i<2023;i){res(res*2)%1000;}printf("%d",res );return 0; }3 4-----4169 #include <stdio.h> #include<string.h> #inc…

C语言——指针(五)

&#x1f4dd;前言&#xff1a; 上篇文章C语言——指针&#xff08;四&#xff09;更加深入的介绍了不同类型指针的特点&#xff0c;这篇文章主要想记录一下函数与指针的结合运用以及const和assert关于指针的用法&#xff1a; 1&#xff0c;函数与指针 2&#xff0c;const 3&am…

3.PyTorch——常用神经网络层

import numpy as np import pandas as pd import torch as t from PIL import Image from torchvision.transforms import ToTensor, ToPILImaget.__version__2.1.13.1 图像相关层 图像相关层主要包括卷积层&#xff08;Conv&#xff09;、池化层&#xff08;Pool&#xff09;…

车联网通信安全之DDS

前面笔者写过一篇文章简单介绍了下工业级通信协议DDS&#xff0c;DDS在车联网领域特别是智能驾驶领域也有着十分广泛的应用&#xff0c;如&#xff1a; 1. 车辆实时数据传输 DDS可以用于车辆之间和车辆与云端之间的实时数据传输&#xff0c;包括车辆状态、传感器数据、位置信息…

node.js和浏览器之间的区别

node.js是什么 Node.js是一种基于Chrome V8引擎的JavaScript运行环境&#xff0c;可以在服务器端运行JavaScript代码 Node.js 在浏览器之外运行 V8 JavaScript 引擎。 这使得 Node.js 非常高效。 浏览器如何运行js代码 nodejs运行环境 在浏览器中&#xff0c;大部分时间你所…

26.Python 网络爬虫

目录 1.网络爬虫简介2.使用urllib3.使用request4.使用BeautifulSoup 1.网络爬虫简介 网络爬虫是一种按照一定的规则&#xff0c;自动爬去万维网信息的程序或脚本。一般从某个网站某个网页开始&#xff0c;读取网页的内容&#xff0c;同时检索页面包含的有用链接地址&#xff0…

Linux系统调试课:USB 常用调试方法

文章目录 一、USB调试工具有哪些二、USB相关节点2.1、USB枚举成功标志2.2、USB speed查询2.3、USB 查询PID、VID沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要 介绍 USB 常用调试方法。 一、USB调试工具有哪些

Qt开发 之 记一次安装 Qt5.12.12 安卓环境的失败案例

文章目录 1、安装Qt2、安卓开发的组合套件2.1、CSDN地址2.2、官网地址2.3、发现老方法不适用了3、尝试用新方法解决3.1、先安装JDK,搞定JDK环境变量3.1.1、安装jdk3.1.2、确定jdk安装路径3.1.3、打开系统环境变量配置3.1.4、配置系统环境变量3.1.5、验证JDK环境变量是否配置成…