网络编程的简单学习

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决) 本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。 阅读详情

网络编程

概述

​ 计算机网络通过 各种协议 将不同的电脑连接起来

​ 目的:

​ 传播交流信息、数据交换、通信

​ 达成的效果需要什么?

​ 1.如何准确地确定一个主机的位置

​ eg: IP地址:端口,定位到该计算机的某个资源

​ 2.如何传输数据?

​ 通过传输的介质

网络通信的要素

​ 需要知道通信双方的地址

​ IP地址

​ 端口号

​ 规则:网络通信的协议

​ TCP/IP参考模型

IP地址

class InetAddress
	//常用方法[了解即可]
	getByName(String str); //通过字符内的网址获取相关IP地址
    getLocalHost(String str); //获取设备名及其IP地址
    getCanonicalHostName() ;	//获取规范化的名字
    getAddress();	//对象地址
    getHostAddress();	//IP地址
    getHostName();	//域名||该设备的名字

​ 唯一定位一台网络上计算机

​ 本地IP地址:127.0.0.1

​ IP地址的分类

​ IPV4 eg:127.0.0.1 ( 4个字节组成)

​ IPV6 eg: xxxx:xxxx::xxxx:xxx… (128位,8个无符号数)

​ 公网-私网

​ 公网(互联网)、私网(局域网) eg:192.168.xx.xx

端口POST

​ 端口表示计算机上的一个程序的进程

​ - 不同的进程有不同的端口号 且不可冲突 ->用于区分软件

​ -被规定 0~65535

​ -还分为TCP、UDP端口(单个协议,端口不能重复。但不同协议,可相同)

​ 端口分类:

​ 公有端口 0~1023

​ HTTP:80

​ HTTPS:443

​ FTP:21

​ Telent:23

​ 程序注册端口:1024~49151,分配用户或程序

​ Tomcat:8080

​ MySQL:3306

​ Oracle:1521

​ 动态、私有端口:49152~65535

​ (尽量不要用这里的端口)

CMD中查看设备的端口

netstat -ano
netstat -ano|findstr "xxx" # 查看指定端口

java中的应用

类

class InetSocketAddress
    getAddress() //获取IP地址
    getHostName() //获取IP地址名
    getPort() //获取端口号 
        //模拟端口
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 8080);
        System.out.println(inetSocketAddress); ///127.0.0.1:8080

        System.out.println(inetSocketAddress.getAddress()); ///127.0.0.1
        System.out.println(inetSocketAddress.getHostName()); //www.lrz.com
        System.out.println(inetSocketAddress.getPort()); //8080

通信协议

​ 为了解决 计算机交流的 一种约定

​ 网络通信协议:速率、码率、代码结构、传输控制…

​ TCP/IP协议族 【=>传输层】

​ TCP:用户传输协议

​ UDP:用户数据报协议

​ IP:网络互联协议

TCP&UDP 的对比

​ TCP:

​ 连接、稳定

​ 三次握手 四次挥手

客户端 --- 请求服务 ---> 服务端
	<--- 回应服务 -------
	---- 再次发送具体请求 -->
	
	--- 申请断开服务 -->
	<--- 通知明白请求 --
	<--- 询问是否确定 --
	---- 确定断开   -->

​ 分为客户端、服务端

​ 传输完成,释放连接,效率低

​ UDP:

​ 不连接、不稳定

​ 虽然也分为客户端和服务端、但没有明确的界限

​ 不管有无准备,都可发送

​ 容易导致DDOS攻击,即你可不接受数据,但它发送不断发送时,会堵塞通道

​

TCP实现聊天

​ 主要类

class socket

客户端

public class TcpDemo {
    public static void main(String[] args) throws Exception {

        //1.获取服务器的地址、端口号
        InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
        int port=9802;

        //2.创建Socket连接
        Socket socket = new Socket(inetAddress,port);
        //3.发送消息
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("Hello".getBytes());

        //关闭资源
        socket.close();
        outputStream.close();
    }
}

服务端

public class TcpServer {
    public static void main(String[] args) throws IOException {

        //1.设置服务器的地址
        ServerSocket serverSocket = new ServerSocket(9802);
        //2.等待客户端连接
        Socket accept = serverSocket.accept();
        //3.读取客户端的消息
        InputStream inputStream = accept.getInputStream();

        //管道流
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] bytes = new byte[1024];
        int len;
        while ((len=inputStream.read(bytes))!=-1){
            byteArrayOutputStream.write(bytes,0,len);
        }

        System.out.println(byteArrayOutputStream.toString());


        //关闭资源
        serverSocket.close();
        inputStream.close();
        accept.close();
        byteArrayOutputStream.close();
    }
}

UDP

​ 不需要连接 但需要知道对方地址

​ 主要java类

class DatagramSocket
class DatagramPacket

服务器

package javaEE;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpServet {
    public static void main(String[] args) throws Exception {
        //开放端口
        DatagramSocket socket = new DatagramSocket(9820);
        
        //接收数据包
        byte[] bytes = new byte[1024];
        DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length);

        //堵塞接收
        socket.receive(packet);

        System.out.println(new String(packet.getData(),0,packet.getLength()));

        socket.close();

    }
}

客户端

package javaEE;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UdpClient {
    public static void main(String[] args) throws Exception {
        //1.建立一个Socket
        DatagramSocket socket = new DatagramSocket();

        //2.建立数据包
        String msg ="Hello";
        //发送对象
        InetAddress localhost = InetAddress.getByName("localhost");
        int port=9820;

        DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);




        //3.发送包
        socket.send(datagramPacket);

        socket.close();
    }
}

大尺寸智能车的CAN驱动控制器制作(一) 本驱动板使用8个半H桥BTS7960驱动,使用CAN接口于车体主控制器通讯,最大承受电压48V 电流20A ,主控为STM32F103VET6,电机控制频率为18KHz,CAN通讯芯片为TJA1042T,全驱动板6-24V宽电压供电,采用24V降5V,5V降3.3V的方案供电,其中经过AMS1117作为降压芯片,可以有效降低主控损毁几率。在这里可以看到555电机相比于其他电机的功率大很多,所以需要大功率的电机驱动,在以往的电机驱动选型中选择了TB6612,L298N等小功率电机驱动。 阅读详情

相关推荐

车载以太网入坑指南,从小白到懂哥的进阶之路【技术分享】

各位技术大佬们好!最近公司项目涉及到车载以太网,刚开始完全懵逼,花了大半个月时间各种查资料、测试设备,总算是摸清了门道。想着互联网上卧虎藏龙,肯定有不少大佬对这个技术感兴趣,所以写个帖子分享一下,顺便求各位大佬指点。

starelink的博客 1261

TCP/IP学习笔记一:BIO的网络编程-简单实例

TCP/IP学习笔记一:BIO的网络编程-简单实例标签(空格分隔): BIO 网络编程一、简单的BIO网络编程实例:实现简单的web服务器(简单模仿Tomcat的请求和响应) 服务器端的实现: package com.bio.socket; import java.io.BufferedReader; import java.io.InputStream; import

MoTui的博客 2318

大模型训练流程(四):PPO强化学习实战与调优指南

本文详细解析了大模型训练中PPO强化学习的实战应用与调优技巧,涵盖RLHF核心原理、PPO算法实现及显存优化策略。通过具体案例和代码示例,指导开发者有效提升模型回答质量与安全性,避免常见训练陷阱。

weixin_29051811的博客 437

python网络编程之计算机网络简单学习

python网络编程之计算机网络简单学习

lz13309833915的博客 784

tanner2019安装教程

tanner2019安装教程 tanner安装包 软件由老师提供,但由于老师给的方法不知怎么回事无法使用就自己找了一些方法,本教程仅提供参考 链接:https://pan.baidu.com/s/1A2O6JuEF8YFbe8bPnD3J6w 提取码:ysif 复制这段内容后打开百度网盘手机App,操作更方便哦 安装过程 1.选择TannerTools_v2019.2-Win64.exe,进行安装。 2.选择安装产品 3.选择目标路径 4.确认安装 5.安装成功,退出。 获取许可过程 1.打开key压缩

weixin_47730560的博客 1万+

如何从RHEL 8升级到RHEL 9

Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。

u012748257的博客 1019

网络编程简单学习

网络编程--主要赘述TCP和UDP

young_man2的博客 1942

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 885

java学习之简单的网络编程

在学习网络编程的过程中,简单写了一下客户端和服务器的小demo package Ray.net2; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputS

Stirve 354

fasterlio原理及代码框架梳理

Faster-LIO 的优势是在保持同等高精度的前提下,显著提升计算效率,以支持更极端的应用场景(如高速无人机)和更廉价的硬件平台。可以把 Faster-LIO 理解为用一把更快的“空间哈希筛子”(iVox)替换了原来精细的“动态平衡树”(ikd-Tree),从而在精度损失极小的情况下,实现了效率的显著提升。:只在实际有地图点的空间区域动态创建和保留体素单元,形成一个稀疏的体素地图。是关键:将去畸变点云中的每个点,在 iVox 维护的局部地图中搜索近邻(如5个最近点),构建点到面的距离残差。

Studying…… 246

152:vue+leaflet 判断一个点是否在一个电子围栏内

本文介绍了一个基于Vue+Leaflet的示例,演示如何判断点是否在电子围栏内。作者大剑师兰特(优快云知名博主)展示了使用polygon.getBounds().contains(latlng)方法检测点与多边形边界的关系。代码仅需80行,通过点击地图触发判断逻辑,结果显示提示信息。该技术可广泛应用于地理围栏、位置服务等场景,需要安装turf依赖。文章提供了完整源码和配置说明,适合GIS开发者学习参考。

大剑师兰特的GIS世界 756

Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件

最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自己理解的东西。 1.首先是对Winsock的一点介绍:Winsock是一种标准的API(应用程序编程接口),主要用于网络中的数据通...

ding7530的博客 536

Python实战日志_P4_图书馆Web API服务

目标:使用Flask将图书馆系统升级为RESTful API服务,掌握Web开发基础难度:⭐⭐⭐⭐☆预计学习时间:75分钟前置要求:已完成第3篇《个人图书馆管理系统》

qq_39436086的博客 83

Java网络编程学习——简单模拟在线聊天

Java网络编程学习——简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了。 本次案例将使用UDP和多线程模拟即时聊天,简单练练手。 1、前提知识 需要知道简单的IO流操作,以及简单的UDP发送数据包的原理。 需要用到的类:DatagramSocket、DatagramPacket UDP数据包基于DatagramSocket发送和接收,DatagramPacket用于封装数据包 看下案例: 客户端发送消息: 正常情况下从控制台读信息,封装到DatagramPacket之中,再由Datagr

weixin_47475332的博客 507

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

socket网络编程简单学习

title: socket网络编程 date: 2019-07-21 19:37:33 categories: java基础 tags: 1. socket编程 1.1. 面向TCP的网络编程 1.2. 简单的本地通信 1.3. 简单的文件上传 2. 总结 1. socket编程 1.1. 面向TCP的网络编程 今天学完socket编程, 发现其实java中的socket编程...

m0_37572877的博客 292

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【学习笔记】简单的socket网络编程实例

TCP的三次握手(图片来自百度百科) TCP的四次分手(图片来自百度百科) 单向交互套结字 服务端 /* * Author: xusongqi@live.com * * Created Time: 2014年03月19日 星期三 17时29分14秒 * * FileName: sock_server.c * * Descript

许嵩奇 1563

Java学习笔记 - 网络编程简单理解

简单的了解网络编程,并实现简易的数据发送与接收。

qq_59059495的博客 521

VC MFC 网络编程入门——简单通信实例学习

VC MFC 网络编程入门——简单通信实例学习2009年12月08日 星期二 下午 09:45<br />对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其所以而不知起所以然。<br />同步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。<br />阻塞套接字是指执行

1101

Python学习超简单第九弹:网络编程

本文介绍了Python网络编程的两个层次:底层Socket编程和高级应用层协议模块。

switch的博客 402

Linux网络编程学习之---简单局域网FTP文件传输服务器

这两天在学习Linux网络编程,老师留了个小作业,就是做一个基于TCP协议的文件服务器。这个周末抽时间完善了一下,现在把代码贴出来,希望对大家有帮助。代码我已经加了详细的注释。

aa__bb__cc的专栏 2520

【网络编程学习】TCP实现简单的聊天功能

本文主要介绍TCP实现简单的聊天功能,涉及了IO、Socket。 一、实现功能 客户端:连接到服务器的Socket(流式套接字) 服务器:创建服务器套接字ServerSocket,等待连接,接受信息 二、代码实现 服务器类代码: package com.testTcp; import java.io.ByteArrayOutputStream; import java.io.IOExcepti...

翱翔于世纪的博客 558

android 4.0 网络编程详解,学习Android网络编程简单总结

最近学到了Android的网络编程,在这里简单总结记录一下。如上图所示,从Android4.0开始,要求访问网络不能在UI主线程里进行,这就要求开发者新建线程来访问网络。并且,更重要的一点,不能在子线程中更新UI。但是,我们从网络上获取数据必须在子线程中完成,UI主线程负责更新UI的内容,该怎么办?这时候,子线程获取的网络数据,必须由子线程发送给UI主线程。这就要用到androd中的headler...

weixin_34299849的博客 478

Python学习笔记(二)网络编程的简单示例

Python中的网络编程比C语言中要简洁很多,毕竟封装了大量的细节。 所以这里不再介绍网络编程的基本知识。而且我认为,从Python学习网络编程不是一个明智的选择。 简单的TCP连接 服务器代码如下: import socket from time import ctime sock = socket.socket() sock.setsockopt(socket...

weixin_34418883的博客 152

从零开始学习 Java:简单易懂的入门指南之网络编程(三十七)

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,不同计算机上运行的程序,可以进行数据传输。

m0_59230408的博客 1383

快速会学习java网络编程Socket与ServerSocket,带有简单案例

网络编程 TCP:三次握手,效率不高,但很稳 UDP:效率高,但不安全,可能丢包 IP:指互联网协议地址,给一个网络中的计算机设备作唯一编号 端口号:计算机上的网络软件都会占用一个端口号(指定或随机)(0-65535之间)(1024以前已经被使用) Socket TCP通信的客户端向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类实现客户端套接字,套接字是两台机器间通信的断点 套接字:包含了ip地址和端口号的网络单位 构造函数: public

东的博客 268

学习C++项目——一个基于C++11简单易用的轻量级网络编程框架 1

一个基于C++11简单易用的轻量级网络编程框架 一、项目下载和导入   现在准备深入学习 C++ ,先肝一个项目,这个项目是《一个基于C++11简单易用的轻量级网络编程框架》,下载地址为:https://gitee.com/xia-chu/ZLToolKit。我使用的环境是虚拟机,虚拟机是 VMware,系统是 CentOs ,这里环境只要有一个 Linux系统环境要求就可以。下载以后的文件为:ZLToolKit-master.zip,在终端输入, unzip ZLToolKit-master.zip 这

墨心 3331
上一篇: IO流的简单学习
下一篇: 注解和反射
code_Floyed
博客等级 码龄7年 3粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值