0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux网络编程

jf_09640219 来源:jf_09640219 作者:jf_09640219 2024-03-26 10:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、介绍

比如2个安卓手机需要通讯,就必须获得对方的IP地址和端口

wKgZomX2ka2AJV7kAAP5n4qgJjM308.pngwKgZomX2lV-Aca30AB1GmzLAIgU761.png

socket套接字:分为TCP和UDP

TCP:面向连接,可靠,(类似于双方打电话),适用于数据量小而且需要准确传输

UDP:面向报文,不可靠,(类似于双方发短信),适用于数据量大且不需要准确传输

wKgZomX2lSCAO43UACggk-g7ydc046.pngwKgaomX2lNuAC-IZAAGPQ1ZXiz8556.png

进程间通信是基于Linux内核的,不适用于两台手机之间的通信。

字节序:

小端:将低序字节存储在起始地址

大端:将高序字节存储在起始地址

wKgaomX2mS2AaGfdAAIYGvahd34588.pngwKgZomX5LR2AYk6BABfbQuMah5Y754.png

电脑是小端字节序,网络字节序是大端字节序。

二、socket服务器与客户端

客户端获取服务器的端口号和IP地址:

wKgZomX2mwCALJ_uABsiaxSPn-A629.pngwKgZomX2nYWAANmtAAuu6DEn-_g558.png

socket的具体工作流程:

wKgaomX2ob6AXEcHABVDTM7L_v4425.png

wKgZomX2o0-AQHU-ABF1UgWIrms045.png

wKgaomX2ph6AFJBRABGqHrVQv6Q325.png

wKgZomX2pj2AEOrMAAsnFEGdHCA631.pngwKgZomX2poSAY8jiAAmkSxA8o1Q530.pngwKgaomX2ppKAHitAAA6wuYoS81o699.pngwKgZomX2psGAQ0AtAAm9i9Mt34o494.png

wKgaomX4PfSAekTwAAXj3X_zQmg956.pngwKgZomX4PamAKZmxAAO4irgffDg660.png

wKgaomX4PtKAQxDvAAv-m_hmCPs796.png

atoi()函数

atoi():int atoi(const char *str );

功能:把字符串转换成整型数。

wKgZomX5RNOAC54lAA0cWwlB9w0119.png

实现例程:

一、linux下客户端连接服务器,成功后,主机(客户端)telnet远程登录虚拟机(服务器):

①:

wKgaomX5VOSAJoz-AAH0rT9JuIw135.png

创建套接字,确定好连接协议(IPV4),type种类选择为流式套接字,基于TCP协议。

②:

wKgZomX5Vd6ANdtmAAMxS9TxCzo014.png

确定好服务器的IP地址以及端口号

其中htons是将端口号转换成网络能识别的格式;inet_aton是将IP地址转化成网络识别的IP地址。

③:

wKgaomX5WRCAfID3AACcrqExgC8998.png

监听是否有客户端连接。

④:

wKgaomX5WTiAMQBOAADJOcEmtVo435.png

允许客户端的接入。

最后while(1);等待客户端的接入。

二、获取客户端的IP地址:

wKgZomX8MdGADVK6AAXOTfO0wLU169.png

在上一个工程代码的结构上,增加accept具体监听对象,以及读取IP地址。

三、客户端与服务器数据传输的实现:

客户端先写入再读取:

wKgZomX8NpmALCdSAALsUeEW4dk726.png

服务器端先读取再写入:

wKgZomX8NtGAY-XsAANs38KMT2Q661.png

最后运行服务器与客户端的代码会得到:

wKgaomX8NvyARUM6ABKQRjBOZHc784.png

四、端口经常被占用,做成main函数传参配置文件

wKgZomX-b5OAVZ_lAAmL7XPcUxg555.png

在上述例子中编写传参参数:

  c_addr.sin_port=htons(atoi(argv[2]));
       inet_aton(argv[1],&c_addr.sin_addr);
其中atoi(argv[2])是将字符串转换为整型数据。

运行结果:

wKgaomX-cxaABXqkAA1fmBkn7WE112.png上:客户端  下:服务器

五、

在上述客户端与服务器之间的聊天


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217976
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90883
  • 网络编程
    +关注

    关注

    0

    文章

    72

    浏览量

    10874
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux驱动开发的必备知识

    内核基础知识: 1、熟悉 Linux 内核的架构、模块系统、进程管理、内存管理等。 了解内核的编译和加载过程。 2、C编程技能: 精通 C 语言编程,包括指针操作、内存管理、结构体等
    发表于 12-04 07:58

    Linux 编程语言盘点:从内核到AI的全栈选择

    在工控圈和嵌入式圈里,有一个常年被讨论的问题:  “在 Linux 上,到底该用什么语言编程?” 有人坚信:C 才是真正的工业语言。有人反驳:Python 才是效率王者。还有人推崇 Go、Rust
    的头像 发表于 11-06 17:05 431次阅读

    爱立信率先完成5G可编程网络技术演示

    近日,在IMT-2020(5G)推进组的组织下,爱立信率先成功完成了5G可编程网络技术演示。本次演示结合实际应用场景验证了可编程网络在服务保障、动态资源分配、
    的头像 发表于 11-05 17:14 2439次阅读

    Linux网络性能调优方案

    在当今高并发、大流量的互联网环境下,网络性能往往成为系统的瓶颈。作为一名资深运维工程师,我在生产环境中遇到过无数次因为TCP/IP参数配置不当导致的性能问题。今天分享一套完整的Linux网络性能调优方案,帮助大家彻底解决
    的头像 发表于 08-06 18:01 956次阅读

    Linux系统中网络配置详解

    网络配置是Linux系统运维中的核心技能之一。正确理解和配置子网掩码、网关等网络参数,直接影响系统的网络连通性和性能。本文将深入探讨Linux
    的头像 发表于 07-17 11:01 867次阅读

    Linux网络管理的关键技术和最佳实践

    在大型互联网企业中,Linux网络管理是运维工程师的核心技能之一。面对海量服务器、复杂网络拓扑、高并发流量,运维人员需要掌握从基础网络配置到高级网络
    的头像 发表于 07-09 09:53 674次阅读

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 544次阅读
    <b class='flag-5'>Linux</b>系统环境监测终极指南

    手把手教你如何调优Linux网络参数

    在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃。本文基于真实案例分析,从参数解读、问题诊断到优化实践,手把手教你如何调优Linux
    的头像 发表于 05-29 09:21 644次阅读

    Linux中,用新设置对CY7C65215重新编程后,如何启用新设置?

    Linux 系统下,如何 1.用 Linux 中的编程新设置配置 CY7C65215? 如\"USB 串口配置实用程序\" 或命令行 fwDownload.exe。 2.在
    发表于 05-26 08:23

    Linux常用命令大全

    Linux常用命令是指在Linux操作系统中广泛使用的命令工具,这些命令工具可以完成各种不同的任务,如管理文件和目录、操作进程、网络通信、软件安装等。
    的头像 发表于 05-03 18:08 1614次阅读

    Linux主要的性能有哪些?

    都有确定的用途。它支持32位和64位硬件,能运行主要的unix工具软件、应用程序和网络协议。linux继承了unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
    的头像 发表于 04-30 18:09 491次阅读
    <b class='flag-5'>Linux</b>主要的性能有哪些?

    如何基于Kahn处理网络定义AI引擎图形编程模型

    本白皮书探讨了如何基于 Kahn 处理网络( KPN )定义 AI 引擎图形编程模型。KPN 模型有助于实现数据流并行化,进而提高系统的整体性能。
    的头像 发表于 04-17 11:31 681次阅读
    如何基于Kahn处理<b class='flag-5'>网络</b>定义AI引擎图形<b class='flag-5'>编程</b>模型

    Linux网络设置与基础服务

    Linux网络设置与基础服务
    的头像 发表于 04-09 11:51 3139次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>网络</b>设置与基础服务

    Linux的作用

    和环境,支持多种编程语言和开发框架。许多开发人员使用Linux作为开发平台,进行软件开发、系统管理和网络管理等工作。 5、学习和教育:Linux是一个开源的操作系统,提供了大量的学习资
    发表于 04-04 01:57

    运动控制卡网络通讯的心跳检测之C#上位机编程

    使用C#上位机编程实现运动控制卡网络通讯的心跳检测功能
    的头像 发表于 12-24 10:54 1966次阅读
    运动控制卡<b class='flag-5'>网络</b>通讯的心跳检测之C#上位机<b class='flag-5'>编程</b>