基于socket套接字的應(yīng)用(一)---IPC

在這篇文章中筆者將以socket應(yīng)用為重點, 跟大家分享一下socket的應(yīng)用. 我們都知道socket是通信套接字, 其實socket的應(yīng)用不僅可以用在網(wǎng)絡(luò)通信中, 本地進(jìn)程通信也可以使用socket來實現(xiàn).

什么是基于socket的IPC

IPC 通信有多種實現(xiàn)方式, 從大的類別上可以分為基于文件的IPC 和 基于內(nèi)存的IPC. 基于文件的IPC又分為基于有序文件和基于無序文件. 基于有序文件的實現(xiàn)方式又分為管道和socket. 本文主要說的就是基于socket有序文件的IPC.

通過對等模型建立socket的IPC

建立socket, 在內(nèi)存中開辟一塊空間, 返回一個文件描述符號.這塊內(nèi)存空間可以指向本地文件或者網(wǎng)卡設(shè)備(這個取決于綁定的地址, 地址唯一決定了一個物理設(shè)備). 如果是本地文件, 系統(tǒng)會自動創(chuàng)建一個socket文件. 如果是網(wǎng)卡, socket開辟的這片內(nèi)存空間指向的就是一個ip地址.

向socket開辟的內(nèi)存中寫數(shù)據(jù),如果bind的是本地文件, 內(nèi)存中的數(shù)據(jù)就會記錄到本地socket文件中, 如果bind的地址是網(wǎng)卡, 內(nèi)存中的數(shù)據(jù)就會發(fā)送給網(wǎng)卡.

接收端進(jìn)程

        int fd = socket(AF_UNIX,SOCK_DGRAM,0);
        if(fd == -1){
                      printf("socket error: %m \n");
                      exit(-1);
                }
        printf("socket success! \n");
        
        //2, 構(gòu)造本地文件地址
        struct sockaddr_un addr = {0};
        addr.sun_family = AF_UNIX;
        memcpy(addr.sun_path,"IPC.sock", strlen("IPC.sock"));
        
        //3, 把socket綁定在地址上
        r = bind(fd, (struct sockaddr*)&addr, sizeof(addr));
        if(r == -1) {
                        printf("bind error: %m \n");
                        close(fd);
                        exit(-1);
                }  
        printf("bind success ! \n");
        
        //4, 接收數(shù)據(jù)
        char buf[200];
        while(1){
            bzero(buf, sizeof(buf));
            r = read(fd, buf, sizeof(buf));// 從fd中讀取數(shù)據(jù)放入buf中, 讀取的長度是sizeof(buf)
            buf[r] = 0;
            printf("%s\n", buf);
        }
        
        //5, 關(guān)閉
        close(fd);
        
        //6, 刪除socket 文件
        unlink("IPC.sock");
發(fā)送端進(jìn)程

    int fd;
    int r;
    struct sockaddr_un addr = {0};
    
    //1, ??socket??
    fd = socket(AF_UNIX, SOCK_DGRAM, 0);
    
    //2, ????????????????????????連接
    addr.sun_family = AF_UNIX;
    memcpy(addr.sun_path, "IPC.sock", strlen("IPC.sock")); 
    r = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
    
    //3, ????????????發(fā)送數(shù)據(jù)
    write(fd, "hello! Alice!", strlen("hello! Alice!"));
    
    //4, ????關(guān)閉網(wǎng)絡(luò)
    close(fd);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锉屈,更是在濱河造成了極大的恐慌崔泵,老刑警劉巖扼褪,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胳搞,死亡現(xiàn)場離奇詭異,居然都是意外死亡嫌吠,警方通過查閱死者的電腦和手機(jī)忌警,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門搁拙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人法绵,你說我怎么就攤上這事箕速。” “怎么了朋譬?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵盐茎,是天一觀的道長。 經(jīng)常有香客問我徙赢,道長字柠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任狡赐,我火速辦了婚禮募谎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阴汇。我一直安慰自己,他們只是感情好节槐,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布搀庶。 她就那樣靜靜地躺著,像睡著了一般铜异。 火紅的嫁衣襯著肌膚如雪哥倔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天揍庄,我揣著相機(jī)與錄音咆蒿,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛沃测,可吹牛的內(nèi)容都是我干的缭黔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蒂破,長吁一口氣:“原來是場噩夢啊……” “哼馏谨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起附迷,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惧互,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喇伯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喊儡,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年稻据,在試婚紗的時候發(fā)現(xiàn)自己被綠了艾猜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡攀甚,死狀恐怖箩朴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情秋度,我是刑警寧澤炸庞,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站荚斯,受9級特大地震影響埠居,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜事期,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一滥壕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兽泣,春花似錦绎橘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至稠鼻,卻和暖如春冈止,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背候齿。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工熙暴, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留闺属,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓周霉,卻偏偏與公主長得像掂器,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诗眨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,144評論 25 707
  • 從三月份找實習(xí)到現(xiàn)在唉匾,面了一些公司,掛了不少匠楚,但最終還是拿到小米巍膘、百度、阿里芋簿、京東峡懈、新浪、CVTE与斤、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,248評論 11 349
  • Android跨進(jìn)程通信IPC整體內(nèi)容如下 1肪康、Android跨進(jìn)程通信IPC之1——Linux基礎(chǔ)2、Andro...
    隔壁老李頭閱讀 11,894評論 11 56
  • 知道那首詩是寫給我的撩穿, 清麗婉約 讓我感動…… 可你在哪里磷支? 那思念,那對白食寡, 如云煙縹緲 清唱離愁…… 為什么你...
    A小天鵝閱讀 216評論 4 5
  • 打草稿雾狈,自動鉛筆打草稿,刻畫人物五官 上膚色 瑰紅+黃+橙 陰影部分紫藍(lán) 分出冷暖 繼續(xù)加冷色陰影抵皱,區(qū)分冷暖 整體...
    夢秦吖閱讀 2,254評論 31 101