0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux網(wǎng)絡(luò)編程

jf_09640219 ? 來源:jf_09640219 ? 作者:jf_09640219 ? 2024-03-26 10:58 ? 次閱讀

一、介紹

比如2個(gè)安卓手機(jī)需要通訊,就必須獲得對(duì)方的IP地址和端口號(hào)

wKgZomX2ka2AJV7kAAP5n4qgJjM308.pngwKgZomX2lV-Aca30AB1GmzLAIgU761.png

socket套接字:分為TCP和UDP

TCP:面向連接,可靠,(類似于雙方打電話),適用于數(shù)據(jù)量小而且需要準(zhǔn)確傳輸

UDP:面向報(bào)文,不可靠,(類似于雙方發(fā)短信),適用于數(shù)據(jù)量大且不需要準(zhǔn)確傳輸

wKgZomX2lSCAO43UACggk-g7ydc046.pngwKgaomX2lNuAC-IZAAGPQ1ZXiz8556.png

進(jìn)程間通信是基于Linux內(nèi)核的,不適用于兩臺(tái)手機(jī)之間的通信。

字節(jié)序:

小端:將低序字節(jié)存儲(chǔ)在起始地址

大端:將高序字節(jié)存儲(chǔ)在起始地址

wKgaomX2mS2AaGfdAAIYGvahd34588.pngwKgZomX5LR2AYk6BABfbQuMah5Y754.png

電腦是小端字節(jié)序,網(wǎng)絡(luò)字節(jié)序是大端字節(jié)序。

二、socket服務(wù)器與客戶端

客戶端獲取服務(wù)器的端口號(hào)和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()函數(shù)

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

功能:把字符串轉(zhuǎn)換成整型數(shù)。

wKgZomX5RNOAC54lAA0cWwlB9w0119.png

實(shí)現(xiàn)例程:

一、linux下客戶端連接服務(wù)器,成功后,主機(jī)(客戶端)telnet遠(yuǎn)程登錄虛擬機(jī)(服務(wù)器):

①:

wKgaomX5VOSAJoz-AAH0rT9JuIw135.png

創(chuàng)建套接字,確定好連接協(xié)議(IPV4),type種類選擇為流式套接字,基于TCP協(xié)議。

②:

wKgZomX5Vd6ANdtmAAMxS9TxCzo014.png

確定好服務(wù)器的IP地址以及端口號(hào)

其中htons是將端口號(hào)轉(zhuǎn)換成網(wǎng)絡(luò)能識(shí)別的格式;inet_aton是將IP地址轉(zhuǎn)化成網(wǎng)絡(luò)識(shí)別的IP地址。

③:

wKgaomX5WRCAfID3AACcrqExgC8998.png

監(jiān)聽是否有客戶端連接。

④:

wKgaomX5WTiAMQBOAADJOcEmtVo435.png

允許客戶端的接入。

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

二、獲取客戶端的IP地址:

wKgZomX8MdGADVK6AAXOTfO0wLU169.png

在上一個(gè)工程代碼的結(jié)構(gòu)上,增加accept具體監(jiān)聽對(duì)象,以及讀取IP地址。

三、客戶端與服務(wù)器數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn):

客戶端先寫入再讀?。?/p> wKgZomX8NpmALCdSAALsUeEW4dk726.png

服務(wù)器端先讀取再寫入:

wKgZomX8NtGAY-XsAANs38KMT2Q661.png

最后運(yùn)行服務(wù)器與客戶端的代碼會(huì)得到:

wKgaomX8NvyARUM6ABKQRjBOZHc784.png

四、端口經(jīng)常被占用,做成main函數(shù)傳參配置文件

wKgZomX-b5OAVZ_lAAmL7XPcUxg555.png

在上述例子中編寫傳參參數(shù)

  c_addr.sin_port=htons(atoi(argv[2]));
       inet_aton(argv[1],&c_addr.sin_addr);
其中atoi(argv[2])是將字符串轉(zhuǎn)換為整型數(shù)據(jù)。

運(yùn)行結(jié)果:

wKgaomX-cxaABXqkAA1fmBkn7WE112.png上:客戶端 ?下:服務(wù)器

五、

在上述客戶端與服務(wù)器之間的聊天


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207910
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84546
  • 網(wǎng)絡(luò)編程
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    10012
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議棧是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議棧(Network Stack)負(fù)責(zé)實(shí)現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用
    的頭像 發(fā)表于 09-10 09:51 ?122次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>協(xié)議棧的實(shí)現(xiàn)

    如何解決Linux系統(tǒng)中的網(wǎng)絡(luò)連接問題?

    如何解決Linux系統(tǒng)中的網(wǎng)絡(luò)連接問題? Linux系統(tǒng)中的網(wǎng)絡(luò)連接問題是常見的技術(shù)難題之一,通常涉及在Linux上配置
    的頭像 發(fā)表于 01-12 15:17 ?625次閱讀

    Linux網(wǎng)絡(luò)基本配置與管理

    Linux是一種開源操作系統(tǒng),被廣泛用于服務(wù)器和網(wǎng)絡(luò)設(shè)備中。在Linux中,網(wǎng)絡(luò)配置和管理是一個(gè)重要且復(fù)雜的任務(wù)。本篇文章將詳細(xì)介紹Linux
    的頭像 發(fā)表于 11-27 16:51 ?692次閱讀

    linux手動(dòng)設(shè)置網(wǎng)絡(luò)參數(shù)

    Linux 是一種廣泛使用的操作系統(tǒng),提供了豐富的網(wǎng)絡(luò)配置選項(xiàng),允許用戶手動(dòng)設(shè)置網(wǎng)絡(luò)參數(shù),以滿足各種網(wǎng)絡(luò)需求。本文將詳盡、詳實(shí)、細(xì)致地介紹 Linu
    的頭像 發(fā)表于 11-27 15:20 ?560次閱讀

    linux網(wǎng)絡(luò)配置的3種方法

    Linux是一種流行的操作系統(tǒng),廣泛應(yīng)用于服務(wù)器和網(wǎng)絡(luò)設(shè)備中。Linux系統(tǒng)提供了多種方法來配置網(wǎng)絡(luò)連接,使得網(wǎng)絡(luò)設(shè)置更加靈活和可定制。本文
    的頭像 發(fā)表于 11-27 14:33 ?3796次閱讀

    linux配置網(wǎng)卡的ip及相關(guān)網(wǎng)絡(luò)參數(shù)

    Linux系統(tǒng)中,配置網(wǎng)絡(luò)參數(shù)包括配置網(wǎng)卡的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS等。本文將以詳盡、詳實(shí)、細(xì)致的方式介紹Linux系統(tǒng)中配置網(wǎng)卡的IP及相關(guān)網(wǎng)絡(luò)參數(shù)的方法。 在
    的頭像 發(fā)表于 11-17 10:55 ?1765次閱讀

    vm虛擬機(jī)linux系統(tǒng)怎么編程

    在虛擬機(jī)中編程Linux系統(tǒng)是學(xué)習(xí)和探索計(jì)算機(jī)科學(xué)的一個(gè)重要方面。使用虛擬機(jī)可以在主機(jī)上模擬出一個(gè)或多個(gè)獨(dú)立的計(jì)算環(huán)境,我們可以在其中安裝和運(yùn)行不同的操作系統(tǒng)。通過創(chuàng)建虛擬機(jī),我們可以在
    的頭像 發(fā)表于 11-17 10:10 ?1480次閱讀

    linux重啟網(wǎng)絡(luò)服務(wù)

    網(wǎng)絡(luò)服務(wù)是現(xiàn)代計(jì)算機(jī)系統(tǒng)中不可或缺的一部分,而Linux作為開源的操作系統(tǒng),其網(wǎng)絡(luò)服務(wù)的管理和維護(hù)也成為系統(tǒng)管理員的一項(xiàng)重要工作。本文將詳細(xì)介紹Linux
    的頭像 發(fā)表于 11-17 09:53 ?1076次閱讀

    Linux網(wǎng)絡(luò)子系統(tǒng)的實(shí)現(xiàn)

    Linux網(wǎng)絡(luò)子系統(tǒng)的分層 Linux網(wǎng)絡(luò)子系統(tǒng)實(shí)現(xiàn)需要: l 支持不同的協(xié)議族 ( INET, INET6, UNIX, NETLINK...) l 支持不同的
    的頭像 發(fā)表于 11-11 11:25 ?1069次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>子系統(tǒng)的實(shí)現(xiàn)

    Socket 網(wǎng)絡(luò)編程框架介紹

    Socket 網(wǎng)絡(luò)編程框架 Socket(套接字)是一個(gè)網(wǎng)絡(luò)編程概念,描述了一個(gè)通信端點(diǎn)(Endpoint),用于建立網(wǎng)絡(luò)連接(Connec
    的頭像 發(fā)表于 11-09 14:19 ?855次閱讀
    Socket <b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>編程</b>框架介紹

    linux異步io框架iouring應(yīng)用

    網(wǎng)絡(luò)方面更加成熟。 目錄 背景簡(jiǎn)介 io_uring 系統(tǒng)API liburing 高級(jí)特性 編程示例 性能對(duì)比 模式對(duì)比 線上應(yīng)用 背景簡(jiǎn)介 熟悉Linux系統(tǒng)編程的同學(xué)都清楚,
    的頭像 發(fā)表于 11-08 15:39 ?498次閱讀
    <b class='flag-5'>linux</b>異步io框架iouring應(yīng)用

    linux命令行與shell編程實(shí)戰(zhàn)

    Linux命令行與Shell編程實(shí)戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進(jìn)程管理、網(wǎng)絡(luò)配置
    的頭像 發(fā)表于 11-08 10:57 ?622次閱讀

    linux命令和shell編程有什么聯(lián)系

    的命令,并提供了許多功能和特性,如變量、控制結(jié)構(gòu)、函數(shù)等,這些功能和特性使得Shell編程成為可能。 其次,Linux命令是Shell編程的重要組成部分。通過使用Linux命令,用戶可
    的頭像 發(fā)表于 11-08 10:53 ?771次閱讀

    Linux指令與Shell編程范例的速查手冊(cè)

    Linux是目前最熱門的操作系統(tǒng)之一,廣泛地應(yīng)用在各大領(lǐng)域,作為服務(wù)器、測(cè)試環(huán)境、手機(jī)和平板電腦的開發(fā)平臺(tái)等。 盡管目前的Linux用 戶界面已經(jīng)十分友善,但在實(shí)際應(yīng)用中還是以命令搭配簡(jiǎn)單的編程來處
    發(fā)表于 09-22 08:01

    Linux下C語(yǔ)言編程入門教程

    u3000本文是Linux 下C 語(yǔ)言編程入門教程。主要介紹了Linux 的發(fā)展與特點(diǎn)、C語(yǔ)言的基礎(chǔ)知識(shí)、Linux 程序設(shè)計(jì)基礎(chǔ)知識(shí)及其下C 語(yǔ)言
    發(fā)表于 09-22 06:56