国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

網(wǎng)絡編程day1——進程間通信-socket套接字

這篇具有很好參考價值的文章主要介紹了網(wǎng)絡編程day1——進程間通信-socket套接字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????基本特征:socket是一種接口技術(shù),被抽象了一種文件操作,可以讓同一計算機中的不同進程之間通信,也可以讓不同計算機中的進程之間通信(網(wǎng)絡通信)

? ? 本地進程間通信編程模型:

? ? ? ? 進程A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????? 進程B

? ? 創(chuàng)建socket對象 ? ? ? ? ? ? ? ? ?????????????????? 創(chuàng)建socket對象

? ? 準備通信地址(本地socket文件) ? ? ???????準備通信地址

? ? 綁定sokect對象和地址 ? ? ? ? ? ??????????????? ...

? ? 監(jiān)聽 ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????? ? ? ? ?...????????????????

? ? 等待連接? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?連接

? ? 接收\發(fā)送數(shù)據(jù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?發(fā)送\接收數(shù)據(jù)

? ? 關(guān)閉socket ? ? ? ? ? ? ? ? ? ?????????????????? ? ? ? 關(guān)閉socket

? ? 刪除socket文件

? ?

? ? 注意:底層需要借助socket文件,才能進行同一計算機不同進程的通信

? ? 注意:每一步驟的返回值一定要判斷 否則不知道是哪一步出問題

創(chuàng)建socket對象

 int socket(int domain, int type, int protocol);

? ? 功能:創(chuàng)建socket對象

? ? domain:

? ? ? ? AF_UNIX/AF_LOCAL ? 本地通信,進程間通信

? ? ? ? AF_INET ? ? ? ? ? ?基于IPv4地址通信

? ? ? ? AF_INET6 ? ? ? ? ? 基于IPv6地址通信

? ? type:

? ? ? ? SOCK_STREAM ? ? 數(shù)據(jù)流協(xié)議 //TCP

? ? ? ? SOCK_DGRAM ? ? ?數(shù)據(jù)報協(xié)議 //UDP

? ? protocol:

? ? ? ? 特殊通信協(xié)議,一般不用,寫0即可

? ? 返回值:成功返回socket描述符,失敗返回-1 ?

綁定socket和通信地址

?int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

? ? ?功能:綁定socket和通信地址(文件路徑\網(wǎng)絡地址)

? ? ?sockfd:socket描述符

? ? ?addr:通信地址結(jié)構(gòu)體

? ? ? ? 實際使用傳遞的地址結(jié)構(gòu)體 sockaddr_un或者sockaddr_in,但是傳參時要把它們轉(zhuǎn)換成sockaddr,因為C語言沒有自建類型的自動類型識別,因此要強轉(zhuǎn) //C++有自動類型識別轉(zhuǎn)換

? ? ? ? //本地通信使用

? ? ? ? #include <sys/un.h>

? ? ? ? struct sockaddr_un {

? ? ? ? ? ? __kernel_sa_family_t sun_family; // 地址簇domain寫啥它寫啥

? ? ? ? ? ? char sun_path[UNIX_PATH_MAX]; ? // socket文件路徑 (文件路徑給新的 ?會自動幫你創(chuàng)建文件)

? ? ? ? };

? ? ? ? // ?網(wǎng)絡通信時使用

? ? ? ? #include <netinet/in.h>

? ? ? ? struct sockaddr_in {

? ? ? ? __kernel_sa_family_t ?sin_family; //地址簇domain寫啥它寫啥

? ? ? ? __be16 ? ? ? ?sin_port; ? // 端口號

? ? ? ? struct in_addr ? ?sin_addr; ? // IP地址結(jié)構(gòu)體

? ? ? ? };

? ? ? ? struct in_addr {

? ? ? ? ? ? __be32 ?s_addr; ? ? // ?IP地址數(shù)據(jù)

? ? ? ? };

? ? addrlen:地址結(jié)構(gòu)體的字節(jié)數(shù),用于區(qū)分是sockaddr_in還是sockaddr_un

? ? 返回值:成功0 失敗-1

監(jiān)聽綁定好的socket

 int listen(int sockfd, int backlog);

? ? 功能:監(jiān)聽已經(jīng)綁定好的socket

? ? sockfd:socket描述符

? ? backlog:監(jiān)聽等待連接的排隊數(shù)量 默認最大128

? ? //等待連接有個排隊隊列 ?backlog是指隊列滿了之后還可以額外排隊的數(shù)量 隨便寫5

? ? 返回值:成功0 失敗-1 ?//監(jiān)聽成功才能等待連接

等待連接

 int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);

? ? 功能:等待連接

? ? sockfd:socket描述符

? ? addr:獲取連接者的地址,不想獲取可以給NULL ? //本地連接基本不用獲取

? ? addrlen:獲取連接者的通信地址結(jié)構(gòu)體字節(jié)數(shù),不想獲取可以給NULL

? ? 返回值:成功返回一個針對該連接的新的socket描述符,失敗返回-1 //接下去通信需要用這個新的socket描述符

? ? 注意:

? ? ? ? 1、如果沒有連接,那么該函數(shù)會阻塞等待

? ? ? ? 2、如果要獲取連接者的地址,后面兩個參數(shù)都需要傳遞

? ? ? ? 3、addrlen要獲取時,先要給addrlen傳遞addr的字節(jié)數(shù),才能獲取連接者的ip

連接

 int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

? ? 功能:連接socket

? ? sockfd:socket描述符

? ? addr:目標地址 ?//建立連接

? ? addrlen:目標地址結(jié)構(gòu)體的字節(jié)數(shù)

? ? 返回值:成功0 失敗-1

發(fā)送數(shù)據(jù)

 ssize_t send(int sockfd,const void *buf,size_t len,int flags);

? ? 功能:向建立連接之后的socket發(fā)送數(shù)據(jù),數(shù)據(jù)流通信使用

? ? sockfd:建立連接之后socket描述符

? ? buf:待發(fā)送的數(shù)據(jù)內(nèi)存首地址

? ? len:要發(fā)送的字節(jié)數(shù)

? ? flags:一般寫0阻塞發(fā)送即可

? ? ? ? MSG_DONTWAIT 不阻塞

? ? ? ? MSG_OOB ? ? ?優(yōu)先緊急數(shù)據(jù)

? ? 返回值:成功發(fā)送的字節(jié)數(shù),出錯返回-1 //連接斷開了就可能發(fā)送失敗

接收數(shù)據(jù)

 ssize_t recv(int sockfd, void *buf, size_t len, int flags);

? ? 功能:從建立連接的socket中接收數(shù)據(jù),數(shù)據(jù)流通信使用

? ? sockfd:建立連接之后socket描述符

? ? buf:存儲接收的數(shù)據(jù)的內(nèi)存首地址

? ? len:buf的字節(jié)數(shù)

? ? flags:一般寫0阻塞接收即可

? ? ? ? MSG_DONTWAIT 不阻塞

? ? 返回值:成功接收到的字節(jié)數(shù),-1出現(xiàn)錯誤,正常斷開返回0

關(guān)閉socket

? ? close(fd)

? ? 功能:關(guān)閉socket //一切皆文件 關(guān)閉新的那個socket 斷開連接

? ?

? ? 192.168.122.4 ? 192.168.122.5 ? ip地址

? ? 255.255.255.0 ? 子網(wǎng)掩碼

? ? 192.168.122.0 ? 網(wǎng)絡地址

? ? 192.168.122.4/24 ?(24個1)相當于&255.255.255.0文章來源地址http://www.zghlxwxcb.cn/news/detail-685351.html

到了這里,關(guān)于網(wǎng)絡編程day1——進程間通信-socket套接字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • UNIX網(wǎng)絡編程:socket & fork()多進程 實現(xiàn)clients/server通信

    UNIX網(wǎng)絡編程:socket & fork()多進程 實現(xiàn)clients/server通信

    UNIX網(wǎng)絡編程:socket實現(xiàn)client/server通信 隨筆簡單介紹了TCP Server服務單客戶端的socket通信,但是并未涉及多客戶端通信。 對于網(wǎng)絡編程肯定涉及到多客戶端通信和并發(fā)編程 (指在同時有大量的客戶鏈接到同一服務器),故本隨筆補充這部分知識。 而且并發(fā)并發(fā)編程涉及到多進程

    2024年02月06日
    瀏覽(23)
  • Linux網(wǎng)絡編程:socket & fork()多進程 實現(xiàn)clients/server通信

    Linux網(wǎng)絡編程:socket & fork()多進程 實現(xiàn)clients/server通信

    UNIX網(wǎng)絡編程:socket實現(xiàn)client/server通信 隨筆簡單介紹了TCP Server服務單客戶端的socket通信,但是并未涉及多客戶端通信。 對于網(wǎng)絡編程肯定涉及到多客戶端通信和并發(fā)編程 (指在同時有大量的客戶鏈接到同一服務器),故本隨筆補充這部分知識。 而且并發(fā)并發(fā)編程涉及到多進程

    2024年02月05日
    瀏覽(28)
  • 【網(wǎng)絡編程】網(wǎng)絡編程 和 Socket 套接字認識

    【網(wǎng)絡編程】網(wǎng)絡編程 和 Socket 套接字認識

    ?個人主頁:bit me?? ?當前專欄:Java EE初階?? 用戶在瀏覽器中,打開在線視頻網(wǎng)站,如優(yōu)酷看視頻,實質(zhì)是通過網(wǎng)絡,獲取到網(wǎng)絡上的一個視頻資源。 與本地打開視頻文件類似,只是視頻文件這個資源的來源是網(wǎng)絡。 相比本地資源來說,網(wǎng)絡提供了更為豐富的網(wǎng)絡資源:

    2023年04月15日
    瀏覽(516)
  • 「網(wǎng)絡編程」第二講:網(wǎng)絡編程socket套接字(一)

    「網(wǎng)絡編程」第二講:網(wǎng)絡編程socket套接字(一)

    「前言」文章是關(guān)于網(wǎng)絡編程的socket套接字方面的,下面開始講解! 「歸屬專欄」網(wǎng)絡編程 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點文青病」「每篇一句」 春風得意馬蹄疾,一日看盡長安花。 ——孟郊《登科后》 目錄 一、預備知識 1.1 源IP和目的IP 1.

    2024年02月09日
    瀏覽(87)
  • 【網(wǎng)絡編程】socket套接字

    【網(wǎng)絡編程】socket套接字

    如果我們的臺式機或者筆記本沒有IP地址就無法上網(wǎng),而因為每臺主機都有IP地址,所以注定了數(shù)據(jù)從一臺主機傳輸?shù)搅硪慌_主機 一定有源IP和目的IP 。 所以在報頭中就會包含源IP和目的IP。 而我們把數(shù)據(jù)從一臺主機傳遞到另一臺主機并不是目的,真正通信的其實是應用層上的

    2024年02月02日
    瀏覽(95)
  • 網(wǎng)絡編程套接字(Socket)

    網(wǎng)絡編程套接字(Socket)

    認識IP地址, 端口號, 網(wǎng)絡字節(jié)序等網(wǎng)絡編程中的基本概念; 學習socket api的基本用法; 能夠?qū)崿F(xiàn)一個簡單的udp客戶端/服務器; 能夠?qū)崿F(xiàn)一個簡單的tcp客戶端/服務器(單連接版本, 多進程版本, 多線程版本); 理解tcp服務器建立連接, 發(fā)送數(shù)據(jù), 斷開連接的流程; 通俗易懂地說,源

    2024年01月21日
    瀏覽(106)
  • 網(wǎng)絡編程—Socket套接字詳解

    網(wǎng)絡編程—Socket套接字詳解

    目錄 一、網(wǎng)絡編程 1.1、為什么需要網(wǎng)絡編程? 1.2、什么是網(wǎng)絡編程 1.3、發(fā)送端和接收端 ?編輯1.4、請求和響應 ?編輯1.5、客戶端和服務端? 二、Socket套接字? 2.1、概念 2.2、分類? 2.2.1、流套接字? 2.2.2、數(shù)據(jù)報套接字? 2.2.3、原始套接字? 2.3、Socket編程注意事項? 1.1、為什

    2024年02月16日
    瀏覽(101)
  • 【網(wǎng)絡編程】網(wǎng)絡編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡編程

    【網(wǎng)絡編程】網(wǎng)絡編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡編程

    前言: 大家好,我是 良辰丫 ,今天我們一起來學習網(wǎng)絡編程,網(wǎng)絡編程的基本概念,認識套接字,UDP與TCP編程.?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE初階 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我們一輩子的財富。 ??期待大家三連,關(guān)注

    2023年04月20日
    瀏覽(85)
  • 網(wǎng)絡編程『socket套接字 ‖ 簡易UDP網(wǎng)絡程序』

    網(wǎng)絡編程『socket套接字 ‖ 簡易UDP網(wǎng)絡程序』

    ??個人主頁: 北 海 ??所屬專欄: Linux學習之旅、神奇的網(wǎng)絡世界 ??操作環(huán)境: CentOS 7.6 阿里云遠程服務器 在當今數(shù)字化時代,網(wǎng)絡通信作為連接世界的橋梁,成為計算機科學領域中至關(guān)重要的一部分。理解網(wǎng)絡編程是每一位程序員必備的技能之一,而掌握套接字編程則

    2024年02月04日
    瀏覽(103)
  • [JAVAee]網(wǎng)絡編程-套接字Socket

    [JAVAee]網(wǎng)絡編程-套接字Socket

    目錄 基本概念 發(fā)送端與接收端 請求與響應 ?編輯客戶端與服務器 Socket套接字? 分類 數(shù)據(jù)報套接字 流套接字傳輸模型?? UDP數(shù)據(jù)報套接字編程 DatagramSocket API DatagramPacket API InetSocketAddress API 示例一: 示例二: TCP流數(shù)據(jù)報套接字編程 ServerSocket API Socket API 示例一: ? 網(wǎng)絡編程指的

    2024年02月13日
    瀏覽(127)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包