socket中fd是什么意思以及如何通過socket獲取對方地址

socket fd

socket中的fd:fild descriptor,就是一個套接字描述器。
在UNIX中的一切事物都是文件(everything in Unix is a file!)。我們用int在描述socket,實際上,所有的文件描述符都是int,沒錯,用的是一個整數(shù)類型。文件是應(yīng)用程序與系統(tǒng)(包括特定硬件設(shè)備)之間的橋梁,而文件描述符就是應(yīng)用程序使用這個“橋梁”的接口。在需要的時候,應(yīng)用程序會向系統(tǒng)申請一個文件,然后將文件的描述符返回供程序使用。返回socket的文件通常被創(chuàng)建在/tmp或者/usr/tmp中。我們實際上不用關(guān)心這些文件,僅僅能夠利用返回的socket描述符就可以了。


獲取對方地址

getpeername:獲取socket的對方地址。

    struct sockaddr_in sa;
    int len = sizeof(sa);
    getpeername(m_sockfd, (struct sockaddr *)&sa, &len);
    CCLog("[SEND]on sending data %d\n", ntohs(sa.sin_port));

記得要通過ntohs轉(zhuǎn)換一下。

ntohs:作用是將一個16位數(shù)由網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換為主機字節(jié)順序

更多關(guān)于網(wǎng)絡(luò)字節(jié)順序與本地字節(jié)順序之間的轉(zhuǎn)換函數(shù)請查看
ntohs, ntohl, htons,htonl的比較和詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大綱 一.Socket簡介 二.BSD Socket編程準備 1.地址 2.端口 3.網(wǎng)絡(luò)字節(jié)序 4.半相關(guān)與全相...
    VD2012閱讀 2,691評論 0 5
  • 大綱 一.Socket簡介 二.BSD Socket編程準備 1.地址 2.端口 3.網(wǎng)絡(luò)字節(jié)序 4.半相關(guān)與全相...
    y角閱讀 2,655評論 2 11
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,187評論 2 33
  • 什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Inter...
    liuboxx1閱讀 1,053評論 0 1
  • 我把過去,都仔細回顧一邊。抹去哀傷。除此之外,只留下美好的過往。無關(guān)愛情,因為那曾經(jīng),是我純真的青春。 如今往事如...
    流離孤云閱讀 420評論 0 1

友情鏈接更多精彩內(nèi)容