首页 > 系统相关 >Linux开发:进程间通过Unix Domain Socket传递数据

Linux开发:进程间通过Unix Domain Socket传递数据

时间:2024-07-06 21:31:22浏览次数:17  
标签:UDS Domain Socket 通过 进程 传递数据 include

进程间传递数据的方式有很多种,Linux还提供一种特殊的Socket用于在多进程间传递数据,就是Unix Domain Socket(UDS)。

虽然通过普通的Socket也能做到在多进程间传递数据,不过这样需要通过协议栈层的打包与拆包,未免有些浪费效率,通过UDS,数据仅仅通过一个特殊的sock文件就可以进行传递。同时由于这种数据传递是通过内核完成的,所以不会存在UDP通信时的丢包现象。

以下对UDS的使用进行封装:

#pragma once
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <string>
#include <iostream>
#include <filesystem>

using namespace std;
namespace fs = std::filesystem;

class UDSData{
public:
    UDSData()
    {
        //创建基于数据包的通信,类似UDP
        m_sockFd = socket(AF_UNIX, SOCK_DGRAM, 0);
        if(m_sockFd == -1)
        {
            cout << "create socket failed" <<endl;
        }
    }

    int bindFile(const string& sockFilePath)
    {
        if(m_sockFd == -1)
        {
            cout << "invalid socket" <<end

标签:UDS,Domain,Socket,通过,进程,传递数据,include
From: https://blog.csdn.net/jiemashizhen/article/details/140229019

相关文章

  • SpringBoot引入WebSocket
    WebSocket是一种在客户端和服务器之间提供低延迟、全双工通信的网络协议。它允许双方在建立一次连接后,进行实时、持续的数据交换,无需像HTTP那样为每一个请求和响应建立新的连接。WebSocket的设计初衷是解决传统HTTP协议在实时通信方面的不足,比如实现实时聊天、游戏、股票报价等......
  • 使用WebSocket和C语言实现一个简单的计算器
    在现代Web开发中,WebSocket已经成为实时通信的重要工具。本文将介绍如何使用WebSocket与C语言结合,实现一个简单的计算器应用。我们将通过Go语言作为中间层,调用C语言编写的计算函数,并通过WebSocket与前端进行交互。在使用本文章代码开发过程中遇到问题,可参考博主的另外两篇博客......
  • FOODGPT: A LARGE LANGUAGE MODEL IN FOOD TESTING DOMAIN WITH INCREMENTAL PRE-TRAI
    文章目录题目摘要方法题目食品测试的大型语言模型论文地址:https://arxiv.org/abs/2308.10173摘要    目前,特定领域的大型语言模型的构建是通过在基础模型上进行微调来完成的。有些模型还包含知识库,无需预先训练。这是因为基础模型在预训练过程中已经包......
  • HTML5 WebSocket技术使用详解
    HTML5WebSocketAPI提供了一种在单个连接上进行全双工通信的方式。这意味着客户端和服务器可以同时发送和接收数据,而不需要像传统的HTTP请求那样进行多次请求和响应的轮询。WebSocket允许更实时的交互,非常适合需要快速、连续数据交换的应用场景,如在线游戏、实时通讯和股票行......
  • WebSocket 前后端示例
    importcn.hutool.json.JSONUtil;importorg.springframework.stereotype.Component;importjavax.websocket.OnClose;importjavax.websocket.OnMessage;importjavax.websocket.OnOpen;importjavax.websocket.Session;importjavax.websocket.server.PathParam;imp......
  • 使用nodejs ws模块连接websocket服务器Unexpected response code: 403错误解决
    使用浏览器连接websocket服务器时一切正常,但是使用nodejs ws模块连接时一直报Unexpectedresponsecode:403错误,查了很多帖子都没说明白,最后自己试着一点一点对比模拟浏览器请求头,最终解决问题,解决后代码如下://TODO不加这个,会报403错误constoptions={headers:{......
  • golang 实现tcp socket 通信
    都说golang适合网络编程,知道今天写了tcp我才知道他到底有多简洁。(虽然已经对着golang的webrtc研究很久了)首先是client端代码:packagemainimport( "bufio" "fmt" "net")funcmain(){ conn,err:=net.Dial("tcp","192.168.1.106:8080") iferr!=ni......
  • 【Websocket】解析帧frame.c源码分析
    0.简介本文主要分析https://github.com/mortzdk/websocket中解析帧相关函数1.predict.h#ifndefwss_predict_h#definewss_predict_h#ifdefined(__GNUC__)||defined(__INTEL_COMPILER)/*__builtin_expect是GCC提供的一个内建函数,用于向编译器提示某个条件在大多......
  • 三次握手,四次挥手,以及Socket、TCP、HTTP之间的区别
    网络开发1.网站:最全的socket,tcp,http三者之间的区别和原理_cocket与tcpip-CSDN博客1.网络七层1.定义:网络七层(简称:OSI),即开放式系统互连。该体系架构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)2.socket,tcp,http三者之间的区别和......
  • 鸿蒙技术之WebSocket连接详解
    WebSocket连接详解WebSocket是一种在单个TCP连接上提供全双工通信信道的协议,它允许服务器主动向客户端推送数据,非常适合实时通信和数据交换频繁的应用场景。以下是WebSocket连接的详细步骤和知识点:1.创建WebSocket对象首先,需要通过createWebSocket()方法创建一个WebSock......