首页
学习
活动
专区
圈层
工具
发布

电波之外:socket套接字,Linux下UDP通信的孤独诗篇

正文 1.预备知识 1.1.IP地址 在 《网络基础四重奏》一文中我们提到过: IP 是全球网络的基础,使用 IP 地址来标识公网环境下主机的唯一性,我们可以根据 目的IP地址 进行跨路由器的远端通信(...,也就是一个 2 字节的整数port,进程 A 运行后,可以给它绑定 端口号 N,在进行网络通信时,根据 端口号 N 来确定信息是交给进程 A 的 所以将之前的结论再具体一点:IP + Port 可以标识公网环境下...这个实现起来比较简单,创建一张哈希表,维护 之间的映射关系,当信息通过网络传输到目标主机时,操作系统可以根据其中的 [目的 Port],直接定位到具体的进程 PID,然后进行通信...,先回顾一下大小端字节序 预备知识 数据拥有高权值位和低权值位,比如在 32 位操作系统中,十六进制数 0x11223344,其中的 11 称为 最高权值位,44 称为 最低权值位 内存有高地址和低地址之分...可以通过 Linux 中查看网络状态的指令,因为我们这里使用的是 UDP 协议,所以只需要输入下面这条指令,就可以查看有哪些程序正在运行 netstat -nlup 现在服务已经跑起来了,并且如期占用了

20110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    千兆网UDP通信

    图8‑13 UDP协议示意图 从上图简单总结几个UDP的特点: 1、UDP是面向报文的,发送方的UDP只需要对应用数据报文添加相关首部后就向下交付,这个过程UDP对应用层交下来的数据报文,既不合并也不进行拆分...(说白了,就是发送时我不管数据能不能被准确接收,接收时也不管数据是否准确)这对某些实时应用是很重要的; 5、UDP 支持一对一、一对多、多对一和多对多的交互通信; 6、UDP 的首部开销小,只有8个字节...端口分用 上面提到UDP支持一对多交互通信,也就是端口分用。当运输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口,上交最后的终点——应用进程: ?...UDP 的首部格式 用户数据报 UDP 有两个字段:数据字段和首部字段。...所谓“伪首部”是因为这种伪首部并不是 UDP 用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP 用户数据报前面,得到一个临时的 UDP 用户数据报。

    1.2K10

    UDP即时通信

    编写一个基于某种I/O方法的UDP应用程序:能够实现模拟C/S模型的通信方 式,接收方负责信息的接收,并能够返回给客户端相应的消息;发送方负 责向接收方发送信息。...1.完成实验要求UDP之间通信; 2.实现模拟C/S模型的通信方式,接收方负责信息的接收,并能够返回给客户端相应的消息;发送方负责向接收方发送信息。...同时在主对话框中的初始化函数(OnInitDialog)将界面中的一些控件设置成false; 设置“启动”按钮的事件处理程序:首先添加OnOK函数,在函数中首先将界面用updateData()函数更新一下,...消息处理程序 BOOL CUDProcsCommDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中...// IDM_ABOUTBOX 必须在系统命令范围内。

    2.2K20

    Java中的UDP通信

    1 UDP通信机制 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。...与TCP协议不同,UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。...使用UDP传输数据时,可能存在的问题有: 丢失包; 乱序; 错误包; 数据包的重复发送。 通常需要使用UDP的场景主要是对数据流要求不高时,如视频流、音频流等。...2 UDP 通信编程的一般步骤 创建客户端的 DatagramSocket 并定义客户端用来接收报文的端口; 创建服务器端的 DatagramSocket 并定义服务端用来接收报文的端口;...5.2 启动服务端 这是一次通信,如果想要建立多次通信,可以在服务端加上循环,方法同 TCP 通信类似。

    49120

    网络通信学习笔记(四)---UDP通信

    UDP协议 这里我们首先需要明白一点,UDP本身就是一种不需要连的协议,所以是不存在客户端与服务端的....我们通常是通过发送方与接收方的概念来区分,但是我们又需要明白一点发送方与接收方可能是同一个机器. 1.1 UDP消息发送1.0 这里我们还是通过代码来讲解,并且这里我们还是分两个部分来讲....其次就是之前我们都是通过 流的形式 来进行数据的传输,但是在UDP中我们则是通过 数据报 的形式来进行,这里其实如果大家学过计算机网络这门课程的话,应该就懂了. 实际效果: ?...1.3 UDP多线程聊天 这里我们会运用到多线程的理念,如果有不了解的建议先去了解一下之后再来学习....localhost",5555,8888)).start(); new Thread(new TalkReceive("学生",9999)).start(); } } 这里我们只需要稍微注意一下端口号的对应就行了

    83310

    Linux__之__基于UDP的Socket编程网络通信

    前言 本篇博客旨在使用Linux系统接口进行网络通信, 帮助我们更好的熟悉使用socket套接字网络通信, 学会了socket网络通信, 就能发现所谓网络, 不过都是套路而已, 话不多说, 让我们直接进入代码编写部分...为了代码的可读性和可调试性, 我们在其中使用日志信息, 接下来我会带领大家手撕一个日志代码, 之后运用到我们的echo demo中, 在日志中, 如果想访问临界资源, 我们需要进行加锁和解锁, 这里我也会带领大家, 基于linux...系统调用进行锁的封装, 使得我们的锁使用起来更加方便. 1.1 Mutex.hpp 想要进行锁的封装, 那我们首先需要了解一下锁, 这里就不过多赘述锁的定义, 简单来说锁是原子性的, 当操作系统在时间片的作用下进行进程间轮转调度时...编写Echo demo代码 2.1 UdpServer.hpp 和 UdpServer.cc 这里使用套接字进行通信, 套接字可以简单理解为一个文件流, 创建套接字之后填写网络信息, 进行和内核的绑定,...socket success, sockfd is" << _sockfd; //2.1填充网络信息并绑定, 网络信息都在sockaddr_in里面, 这里我们封装一下

    34210

    【Linux】用C++实现UDP通信:详解socket编程流程

    协议(Protocol) 协议 是计算机或通信系统中,不同实体(如设备、程序、服务等)之间进行交互和通信时,共同遵循的一套规则和标准。...常见协议分类 类别 协议示例 作用 网络通信 TCP/IP、HTTP、FTP 实现数据传输和网络互联 安全协议 SSL/TLS、SSH、HTTPS 加密通信和身份验证 应用层协议 SMTP(邮件)、DNS...) 支持广播/多播 可向多个主机同时发送数据 UDP协议实现通信 服务器端 由于UDP协议是一种通过数据报在网络中传输的协议,所以我们在创建套接字的时候需要将参数设置为数据报类型,服务器端主要有几个功能...的通信流程,从创建 socket、绑定地址,到收发数据、关闭连接,每一步都围绕 Linux 下的 socket 编程核心展开。...虽然 UDP 天生“无连接、不可靠”,但正因如此,它在低延迟、高并发场景下依然扮演着重要角色。希望这篇博客不仅帮你理清了 UDP 的基本用法,也为你后续深入网络编程打下了坚实的地基。

    85110

    Linux系统-进程间通信

    Linux进程间通信 零、前言 一、进程间通信介绍 二、管道 1、匿名管道 2、命名管道 三、system V 1、共享内存概念及原理 2、共享内存使用接口介绍 1、共享内存资源的查看 2、共享内存的创建和释放...3、共享内存的链接与去连接 4、接口使用示例 3、共享内存与管道对比 4、消息队列/信号量 零、前言 本章主要讲解学习Linux中本系统下的进程间通信 一、进程间通信介绍 概念: 进程间通信简称...:让不同的进程看到同一份资源 由于进程之间具有独立性,代码数据独立拥有,若想实现通信,可以通过向第三方资源(实际上就是操作系统提供的一段内存区域)写入或是读取数据,进而实现进程之间的通信 进程间通信发展...,也就是说操作系统并没有为此做过多的设计工作,而system V IPC是操作系统特地设计的一种通信方式;但是不管怎么样,它们的本质都是一样的,都是在想尽办法让不同的进程看到同一份由操作系统提供的资源...一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据 system V IPC提供的通信方式有以下三种: system

    3.4K20

    linux 系统 UDP 丢包问题分析思路

    最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。...确认有 UDP 丢包发生 要查看网卡是否有丢包,可以使用 ethtool -S eth0 查看,在输出中查找 bad 或者 drop 对应的字段是否有数据,在正常情况下,这些字段对应的数字应该都是 0。...此外,linux 系统也提供了各个网络协议的丢包信息,可以使用 netstat -s 命令查看,加上 --udp 可以只看 UDP 相关的报文数据: [root@holodesk02 GOD]# netstat...Linux 系统丢包 linux 系统丢包的原因很多,常见的有:UDP 报文错误、防火墙、UDP buffer size 不足、系统负载过高等,这里对这些丢包原因进行分析。...如果遇到丢包比率非常大的情况,请先检查防火墙规则,保证防火墙没有主动 drop UDP 报文。 UDP buffer size 不足 linux 系统在接收报文之后,会把报文保存到缓存区中。

    8K42

    Linux 系统 UDP 丢包问题分析思路

    在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。...确认有 UDP 丢包发生 要查看网卡是否有丢包,可以使用 ethtool -S eth0 查看,在输出中查找 bad 或者 drop 对应的字段是否有数据,在正常情况下,这些字段对应的数字应该都是 0。...Linux 系统丢包 linux 系统丢包的原因很多,常见的有:UDP 报文错误、防火墙、UDP buffer size 不足、系统负载过高等,这里对这些丢包原因进行分析。...如果遇到丢包比率非常大的情况,请先检查防火墙规则,保证防火墙没有主动 drop UDP 报文。 UDP buffer size 不足 linux 系统在接收报文之后,会把报文保存到缓存区中。...linux 系统本身就是相互关联的系统,任何一个组件出现问题都有可能影响到其他组件的正常运行。对于系统负载过高,要么是应用程序有问题,要么是系统不足。

    17.3K31

    Linux 多进程通信开发之 UNIX domain Socket 通信机制从 TCP 切换为 UDP

    Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。提供 UDP 和 TCP 两种通信机制。...模式差异 至于两种通信机制的差异,除了在创建套接字时声明的差异,具体的通信流程也有差异,在这里找到 CSDN @frank909 的两张图片,感觉很有代表性,在这里引用一下。 首先是 TCP的: ?...多进程通信开发(七): unix domain socket 之 UDP 通信:https://blog.csdn.net/briblue/article/details/89350869 Linux...domain socket 简介:https://www.cnblogs.com/sparkdev/p/8359028.html linux 进程间使用unix socket通信:https://blog.csdn.net.../nurke/article/details/77621782 --------------------- Author: Frytea Title: Linux 多进程通信开发之 UNIX domain

    2.3K31
    领券