精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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
    +關注

    關注

    87

    文章

    11229

    瀏覽量

    208927
  • 服務器
    +關注

    關注

    12

    文章

    9021

    瀏覽量

    85184
  • 網絡編程
    +關注

    關注

    0

    文章

    71

    瀏覽量

    10067
收藏 人收藏

    評論

    相關推薦

    Python編程:處理網絡請求的代理技術

    網絡編程中,代理技術扮演著至關重要的角色,尤其在處理網絡請求時。通過代理服務器,我們可以實現請求的轉發、緩存、負載均衡以及安全控制等功能。Python作為一種功能強大的編程語言,為提
    的頭像 發表于 11-12 07:23 ?135次閱讀

    Linux網絡基礎知識總結

    同 CPU、內存以及 I/O 一樣,網絡也是 Linux 系統最核心的功能。 網絡是一種把不同計算機或網絡設備連接到一起的技術,它本質上是一種進程間通信方式,特別是跨系統的進程間通信,
    的頭像 發表于 10-28 10:42 ?197次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網絡</b>基礎知識總結

    Linux應用編程的基本概念

    Linux應用編程涉及到在Linux環境下開發和運行應用程序的一系列概念。以下是一些涵蓋Linux應用編程的基本概念。
    的頭像 發表于 10-24 17:19 ?184次閱讀

    Linux開發怎么學?

    令是使用 Linux 的基礎,包括文件操作、目錄管理、用戶管理、進程管理、網絡管理等方面。可以通過閱讀相關的書籍、在線教程等方式學習。以下是常用的命令實例。 # 列出當前目錄下的文件和子目錄 ls # 更改
    發表于 10-10 14:34

    Linux網絡協議棧的實現

    網絡協議棧是操作系統核心的一個重要組成部分,負責管理網絡通信中的數據包處理。在 Linux 操作系統中,網絡協議棧(Network Stack)負責實現 TCP/IP 協議簇,處理應用
    的頭像 發表于 09-10 09:51 ?260次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網絡</b>協議棧的實現

    linux開發板與樹莓派的區別

    操作系統的微型計算機,主要用于教育、編程、媒體播放等領域。 硬件配置 Linux開發板:Linux開發板的硬件配置因廠商和型號而異,通常包括處理器、內存、存儲、網絡接口等。 樹莓派:樹
    的頭像 發表于 08-30 15:34 ?774次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux驅動開發主要是針對硬件設備進行編程,處于操作系統內核層,直接與硬件交互,為上層應用提供設備訪問的接口。Linux應用開發則
    的頭像 發表于 08-30 12:16 ?605次閱讀
    <b class='flag-5'>Linux</b> 驅動開發與應用開發,你知道多少?

    如何使用Python進行神經網絡編程

    。 為什么使用Python? Python是一種廣泛使用的高級編程語言,以其易讀性和易用性而聞名。Python擁有強大的庫,如TensorFlow、Keras和PyTorch,這些庫提供了構建和訓練神經網絡的工具。 神經網絡的基
    的頭像 發表于 07-02 09:58 ?365次閱讀

    FCX3使用cyusb_linux通過Linux對其進行編程,報SPI扇區擦除失敗怎么解決?

    我有一個 FCX3 定制板,我嘗試使用 cyusb_linux 通過 Linux 對其進行編程。 我 CAN 看到設備 VID (04b4) 和 PID (00f3),但是當嘗試對 SPI 進行
    發表于 02-26 06:39

    linux多線程編程實例

    linux線程
    的頭像 發表于 02-15 21:16 ?415次閱讀
    <b class='flag-5'>linux</b>多線程<b class='flag-5'>編程</b>實例

    如何解決Linux系統中的網絡連接問題?

    如何解決Linux系統中的網絡連接問題? Linux系統中的網絡連接問題是常見的技術難題之一,通常涉及在Linux上配置
    的頭像 發表于 01-12 15:17 ?900次閱讀

    Linux越來越容易受到攻擊,怎么防御?

    在數字化時代,網絡安全已成為企業不可忽視的重要議題。尤其是對于依賴Linux服務器的組織,面對日益復雜的網絡攻擊,傳統安全措施已顯不足。Linux服務器面臨著哪些新型
    的頭像 發表于 12-23 08:04 ?1053次閱讀
    <b class='flag-5'>Linux</b>越來越容易受到攻擊,怎么防御?

    Linux網絡基本配置與管理

    Linux是一種開源操作系統,被廣泛用于服務器和網絡設備中。在Linux中,網絡配置和管理是一個重要且復雜的任務。本篇文章將詳細介紹Linux
    的頭像 發表于 11-27 16:51 ?899次閱讀

    linux手動設置網絡參數

    Linux 是一種廣泛使用的操作系統,提供了豐富的網絡配置選項,允許用戶手動設置網絡參數,以滿足各種網絡需求。本文將詳盡、詳實、細致地介紹 Linu
    的頭像 發表于 11-27 15:20 ?665次閱讀

    linux網絡配置的3種方法

    Linux是一種流行的操作系統,廣泛應用于服務器和網絡設備中。Linux系統提供了多種方法來配置網絡連接,使得網絡設置更加靈活和可定制。本文
    的頭像 發表于 11-27 14:33 ?4271次閱讀