首页 > 编程语言 >网络编程的应用

网络编程的应用

时间:2024-09-20 13:51:22浏览次数:3  
标签:端口 编程 程序 网络 应用 new 服务端 客户端

目录

1.单机程序和网络程序

2.客户端与服务端

3.网络编程三要素

3.1  IP地址

3.2  port端口

4.TCP编程

5.UDP编程


1.单机程序和网络程序

  • 之前编写的程序都是单机程序,所有的业务功能实现及数据存储都在一个主机上完成,我们称为单机程序

  • 我们在生活中使用的绝大多数的程序(应用,软件,app),都可以基于网络,与其他主机的程序进行数据交互,又不同的主机程序完成不同的业务功能。

2.客户端与服务端

  • 在编写网络程序时,一般都会至少涉及两部分内容

  • 客户端 : 主动发起连接的那个程序,就称为客户端程序。

  • 服务端 : 接收连接信号的程序,就称为服务端程序。

3.网络编程三要素

3.1  IP地址

  • 在网络环境中,每一个主机都会有一个唯一的网络标识,我们称为ip(地址)

  • 在网络中可以通过ip,找到唯一的一个主机

  • ip标识的格式规范

    • IPV4 : 32bit,平均分成4分,来表示ip , 每一份8bit , 0~255

    • IPV6 : 128bit,平均分成6分,每一份使用16进制的数字来表示

  • 使用本机ip地址

    • 在cmd中,使用ipconfig命令,查看当前主机在局域网中的ip地址

    • 如果连接本机,可以使用 localhost 或 127.0.0.1

3.2  port端口

  • 计算机上运行的每一个程序,都会拥有一个(物理)端口

  • 端口的作用就是实现程序内部与外部的数据通讯的。

  • 随着程序启动,系统会自动的为程序的物理端口,分配一个数字标识,称为逻辑端口

    • 在编写网络程序时,我们也可以手动为程序指定逻辑端口号

  • 逻辑端口的数字范围 0~65535 , 其中0~1023 多作为系统程序的端口

  • 如果一个程序的逻辑端口号,与另一个程序的逻辑端口号相同,我们称为端口号冲突

  • 只能启动一个程序。

3.3  通讯协议

使用的通讯协议有两种

  • TCP : 一种安全型协议,能够包装数据传输的安全性,也就是能够保证双方一定能收到数据

    通过3次握手,确保双方的网络是联通

    通过4次挥手,确保双发的连接是断开的。

  • UDP : 一种不专注于数据安全传输的协议。适合广播,音频信息的传播。

4.TCP编程

Java中提供了ServerSocket对象,可以充当服务端

public static void main(String[] args) throws IOException {
    //启动了一个可以充当服务端的Java程序
    ServerSocket server = new ServerSocket(6666);
}

Java中提供了Socket对象,可以充当客户端

 public static void main(String[] args) throws IOException {
     //启动了一个可以充当客户端的Java程序
     Socket client = new Socket("192.168.28.173" , 6666);
 }

服务端程序启动后,需要等待客户端的连接

//等待客户端的连接,在等待过程中,当前线程会处于阻塞状态
//一旦客户端连接了,该方法会返回一个Socket对象
Socket client = server.accept();




public static void main(String[] args) throws IOException {
        //启动了一个可以充当服务端的Java程序
        ServerSocket server = new ServerSocket(6666);

        System.out.println("======启动服务器========");
        //等待客户端的连接
        Socket link = server.accept();

        System.out.println("收到了【"+link.getInetAddress()+"】客户端的连接");
    }
  • 一旦客户端和服务端产生了连接,接下来双方的交互都是基于Socket对象的。

  • 两端的数据交互,最终是基于网络IO

  • Socket可以提供用于网络读写数据的IO流

InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();

注意:与文件io读取操作不同,网络数据没有一个明确的结束。

当使用is.read()无法读取到数据时,默认不会获得-1,而是会阻塞等待

所以在使用网络io读写数据时,要提供一个结束标识,可以有两种方式

方式一:在a端使用socket.shutdownOutput(),在b端通过-1结束

方式二:在a端额外传递一个结束字符串os.write("[over]".getBytes())

在b端读取到结束字符串时就可以结束了。

5.UDP编程

  • 编程语法上没有区分客户端对象和服务端对象 (逻辑上依然存储分别)

  • 只要是UDP网络编程中的一个主机端,就需要创建 DatagramSocket

    //如果当前的主机端作为逻辑服务端,需要指定端口
    //如果当前的主机端作为逻辑客户都安,是否指定端口都可以。
    DatagramSocket socket = new DatagramSocket(6666);
    DatagramSocket socket = new DatagramSocket();

  • UDP的数据传输,需要额外的一个对象 DatagramPacket

  • 读写数据都需要依赖这个对象

//发数据时的packet构建,此时数组中要装有发送的内容
String str = "buka is good" ;
byte[] bs = str.getBytes();
DatagramPacket p = new DatagramPacket(
    bs , 0 , bs.length,
    InetAddress.getByName("localhost"),8888
);

//收数据时的packet构建,此时数组是一个空数组
byte[] bs = new byte[1024];
DatagramPacket p = new DatagramPacket(
    bs , 0 , bs.length
);
  • 实现数据包的发送和接收

//发送方发送数据
socket.send(p);

//接收接收数据,并获得发送方的一些信息(ip + port)
socket.receive(p);
String str = new String(p.getData(), 0, p.getLength());
System.out.println("收到来自【"+p.getSocketAddress()+":"+p.getPort()+"】的消息:" + str);

标签:端口,编程,程序,网络,应用,new,服务端,客户端
From: https://blog.csdn.net/lzp122390/article/details/142340591

相关文章

  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    目 录摘要1绪论1.1课题背景1.2意义1.3HTML介绍1.4JavaScript运行模式1.5css3工作原理1.6论文结构与章节安排2 在线网络教育平台分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程32.2.2数据修改流程42.2.3数据删除流程42.3系统功能......
  • [网络][知识]TCP-IP各协议的RFC编号和RFC原始文档的获取地址
    TCP/IP协议族包括很多个子协议,下面是TCP/IP 协议和支持服务所支持的 RFC。RFC768  用户数据报协议 (UDP)RFC783  简单文件传输协议 (TFTP)RFC791  Internet 协议 (IP)RFC792  Internet 控制消息协议 (ICMP)RFC793  传输控制协议 (TCP)RFC816  故......
  • 防晃电装置的原理、特点和应用?
    一、什么是防晃电装置?防晃电装置是一种用于保障电力系统稳定性和连续性的设备,特别设计用来应对电压暂降、瞬时断电和其他电力扰动。其主要目的是确保关键设备和工业流程在面对电力供应不稳定时,能够平稳运行,防止设备损坏和生产中断。二、防晃电装置的工作原理DCM621KH智能型电机防晃......
  • [网络][知识]计算机端口详细列表
    计算机端口介绍  我们常常会在各类的技术文章中见到诸如135、137、139、443之类的“端口”,可是这些端口究竟有什么用呢?它会不会给我们的计算机带来潜在的威胁呢?究竟有多少端口是有用的?想要了解的话,就跟我来吧:D端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方......
  • 【网络原理】❤️Tcp 常用机制❤️ —— 延时应答,捎带应答, 面向字节流, 异常情况处理。保姆
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中
    使用TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代OGG,Kettle等同步工具,以及基于Kafka的ETL解决方案,「CDC+流处理+数据集成」组合拳,加速仓内数据流转,帮助企业将真正具有业务价值的数据作用到实处,将“实时数仓”方法论落进现实。TapData持续迭代产品......
  • AI美女照引爆网络,已经真假难辨?flux模型,给AI绘画带来前所未有的真实感,你能看出来吗?(附模
    最近,网上掀起了一股AI美女照的热潮,让人不禁感叹:这互联网,还有没有活人了?AI美女这些AI美女照,不仅数量惊人,质量更是让人瞠目结舌。你可能会问,这真的是AI生成的吗?别急,咱们慢慢道来。首先,这些照片背后的技术,是一个名为Flux的模型。这个模型,之前就因为生成各种超高拟真度的人......
  • 云栖大会Day1:云应用开发平台 CAP 来了
    2024云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台CAP。CAP拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。阿里云云原生应用平台负责人丁宇AI被认......
  • Python面向对象编程
    Python-面向对象:类、对象、属性、方法面向对象概念面向对象编程(Object-orientedProgramming,简称OOP),是一种封装代码的方法面向对象:将模拟真实世界里的事物(对象)和描述其特征(属性)的数据和函数代码块(方法)封装到一起(类)类:可以理解是一个模板,通过它可以创建出无数个具体实例对象:类并......
  • GSS静态转换开关(STS)在电厂的抗晃电应用
    电厂作为典型的连续型生产企业,是一个自动化程度很高的特殊行业,自动化的生产设备依赖于供电系统的安全、稳定、连续运行。大容量机组发电机的DCS控制系统,包括各种热工自动装置,如自动调节用组装仪表、汽轮机电液数字调节装置、锅炉联锁及安全监察系统FSSS、汽机监视仪表(TSI)、协调控制......