首页 > 系统相关 >Linux网络编程基础API

Linux网络编程基础API

时间:2024-01-24 20:24:51浏览次数:33  
标签:转换 socket 主机 编程 网络 整数 API Linux 字节

目录


socket地址API

主机字节序和网络字节序
在 Linux 系统中,主机字节序(Host Byte Order)和网络字节序(Network Byte Order)是两个重要的概念。

  • 主机字节序是指 CPU 直接处理数据时使用的字节序。在 x86 架构的 Linux 系统中,主机字节序通常是小端字节序(Little Endian),即最低有效字节(Least Significant Byte)位于最低内存地址。
  • 网络字节序是指在网络通信中使用的字节序。在 TCP/IP 协议中,网络字节序通常是大端字节序(Big Endian),即最高有效字节(Most Significant Byte)位于最低内存地址。

在进行网络编程时,经常需要在主机字节序和网络字节序之间进行转换。例如,在发送数据时,需要将主机字节序转换为网络字节序;在接收数据时,需要将网络字节序转换为主机字节序。
在 Linux 系统中,可以使用htonl()htons()ntohl()ntohs()等函数进行字节序转换。这些函数的命名规则如下:

  • h表示主机(Host)。
  • n表示网络(Network)。
  • l表示长整型(Long)。
  • s表示短整型(Short)。

例如,htonl()函数将一个 32 位的整数从主机字节序转换为网络字节序,ntohl()函数将一个 32 位的整数从网络字节序转换为主机字节序。

下面是一个简单的示例,展示了如何在 Linux 中进行字节序转换:

#include <arpa/inet.h>
#include <iostream>

int main() {
    // 定义一个 32 位整数
    uint32_t host整数 = 0x12345678;

    // 将主机字节序转换为网络字节序
    uint32_t network整数 = htonl(host整数);

    // 将网络字节序转换为主机字节序
    uint32_t host整数_2 = ntohl(network整数);

    // 打印结果
    std::cout << "主机字节序:" << std::hex << host整数 << std::endl;
    std::cout << "网络字节序:" << std::hex << network整数 << std::endl;
    std::cout << "转换后的主机字节序:" << std::hex << host整数_2 << std::endl;

    return 0;
}

在上面的示例中,我们定义了一个 32 位的整数host整数,然后使用htonl()函数将其转换为网络字节序,并使用ntohl()函数将其转换回主机字节序。最后,我们打印出转换前后的结果。


创建socket


命名socket


监听socket


接收连接


发起连接


关闭连接


数据读写


带外标记


地址信息函数


socket选项


网络信息API

标签:转换,socket,主机,编程,网络,整数,API,Linux,字节
From: https://www.cnblogs.com/yubo-guan/p/17985769

相关文章

  • NOI Linux 系统使用的笔记
    我为什么现在才会用啊。不知道是谁去年THUSC时不会用,导致用代码没法编译运行。终端的指令首先,几个常用的编译指令,在终端(Terminal)里使用。编译指令ls(list),会列出当前所在文件夹的所有子文件夹。cdname,访问子文件夹特别的,返回到上级目录夹用以下指令:cd..编辑器接下......
  • petalinux 报错总结
    Failedtomenuconfigprojectcomponent....解决办法此处是由于Terminal(终端)的界面太窄导致的,把Terminal(终端)界面拉宽即可;重新执行命令【petalinux-config--get-hw-description=*.xsa“path”】后,可以看到配置界面弹出来了,且没有了刚刚的错误。do_rootfs:Thepostinstall......
  • 【linux学习】使用_nmon_工具对系统进行监控
    【linux学习】使用_nmon_工具对系统进行监控原创:厦门微思网络 【微思2002年成立,专业IT认证培训21年!】 我们主要课程:思科、华为、红帽、ORACLE、VMware、CISP、PMP等认证培训及考证。......
  • Linux基础46 ansible概述, 结构, 安装与配置文件, 主机清单配置
    Ansible学习一、Ansible概述1.什么是ansible?Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。2.自动化工具1.puppet学习难,安装ruby环境难,没......
  • linux 安装多版本java,并可切换版本
    我多版本切换,省事操作。配置:/etc/profileexportJAVA_HOME=/usr/java/jdk/jdk1.8.0_201exportJRE_HOME=/usr/java/jdk/jdk1.8.0_201/jreexportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH#切换1.8......
  • Apipost自动化测试+Jenkins实现持续集成
    Apipost自动化测试支持「持续集成」功能,在安装了Apipost的服务器中输入命令,即可运行测试脚本。创建自动化测试脚本在创建好的测试用例中选择「持续集成」 点击新建,配置运行环境、循环次数、间隔停顿后点击保存会生成命令。 安装Apipost-clinpminstall-gapipost-cl......
  • Understanding the linux kernel Chapter3 Processes
    ProcessDescriptorHowProcessesAreOrganizedtheprocessinstate:TASK_RUNNINGorganizedinrunqueuelistgroupTASK_STROPPED\EXIT_ZOMBIE\EXIT_DEADThereisnoneedtogroupprocessesinanyofthesethreestates,becausestopped,zombie,andd......
  • 如何让你的.NET WebAPI程序支持HTTP3?
    下面我将总结构建Http3的经验,以TokenGateway的项目为例,请注意使用Http3之前你需要知道它的限制,WindowsWindows11版本22000或更高版本/WindowsServer2022。TLS1.3或更高版本的连接。Linux已安装libmsquic包。实现讲解首先我们需要拉取我们的代码gitcloneh......
  • linux系统相关信息查询
    查看主机内核版本:cat/etc/redhat-release查看系统发行版本:uname-r查看主机cpu:lscpu查看主机内存:free-m......
  • Python并发编程之进程间通信与线程间通信
    进程间通信与线程间通信【一】进程间通信(IPC)​ 进程间通信(Inter-ProcessCommunication,IPC)是指在不同进程之间进行数据交换和信息传递的机制。在多进程系统中,不同进程可能运行在不同的地址空间,因此需要一些特殊的方法来实现它们之间的通信。以下是一些常见的进程间通信的方法:......