ip地址和埠號筆試題

才智咖 人氣:8.52K

我們如何從sin_addr取得此客戶端的Ip地址和埠號呢?  在socket程式設計中,服務器端accept()等待一個客戶端的連線,當連線成功後,accept拷貝客戶端的.地址資訊到sin_addr裡面,我們如何從sin_addr取得此客戶端的Ip地址和埠號呢?

ip地址和埠號筆試題

實際上,當sockaddr__family = AF_INET時,sockaddr = sockaddr_in。

據此,我們可以做一下轉換,就可以利用 inet_ntoa() 來得到ip地址和埠號了:

int new_fd = accept(sock, &clientAddr, &sin_size);

if(new_fd<0)

{

char msg[64];

bzero(msg,sizeof(msg));

sprintf(msg,"accept failed");

log::outputSysErr(msg);

}

else

{

// 將sockaddr強制轉換為 sockaddr_in

sockaddr_in sin;

memncpy(&sin, &clientAddr, sizoef(sin));

// 取得ip和埠號

sprintf(, inet_ntoa(_addr));

= _port;

= new_fd;

}