A evo i jednog primera (deo naravno) koji uzima IP adresu hosta s'kojim smo u kontaktu. Naravno prvo moras da se connect() -ujes.
Code:
sockaddr_in peer;
int nSize(sizeof(peer)), nResult(0);
// Now let's see the IP address of the host!
if (!(nResult = GetPeerName((struct sockaddr*) &peer, &nSize))) {
nResult = GetLastError();
CString sMsg;
sMsg.Format("GetPeerName() returned %d!",nResult);
AfxMessageBox(sMsg, MB_OK);
// we are still connected
bCurrentStatus = true;
}else {
// decode it...
m_dwAddress = (DWORD) htonl(peer.sin_addr.S_un.S_addr);
bCurrentStatus = true;
}
Ovaj deo koda koristim u OnConnect dogadjaju klase CAsyncSocket. Naravno pricam o MFC-u i Windowsu. Koliko tebi treba pod Linuxom, ali ovaj kod, bez WIN API funkcija (GetLastError, AfxMessageBox i CString klasa), radi i pod Linuxom. Jedna napomena: socket api funkcije ovde su pozivane kao metode klase CAsyncSocket, pa zato nigde nema id socket-a koji one imaju kao parametar.
Naravno ove funkcije nisu prakticne za bilo sta sto je vece od 32 bita (DWORD), pa je onda bolje da koristis external data representation (XDR).
Pogledaj pod man xdr.