socket fd
socket中的fd:fild descriptor,就是一個套接字描述器。
在UNIX中的一切事物都是文件(everything in Unix is a file!)。我們用int在描述socket,實(shí)際上,所有的文件描述符都是int畴椰,沒錯,用的是一個整數(shù)類型鸽粉。文件是應(yīng)用程序與系統(tǒng)(包括特定硬件設(shè)備)之間的橋梁斜脂,而文件描述符就是應(yīng)用程序使用這個“橋梁”的接口。在需要的時候触机,應(yīng)用程序會向系統(tǒng)申請一個文件帚戳,然后將文件的描述符返回供程序使用。返回socket的文件通常被創(chuàng)建在/tmp或者/usr/tmp中儡首。我們實(shí)際上不用關(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)換為主機(jī)字節(jié)順序
更多關(guān)于網(wǎng)絡(luò)字節(jié)順序與本地字節(jié)順序之間的轉(zhuǎn)換函數(shù)請查看
ntohs, ntohl, htons,htonl的比較和詳解