için ben OSX için limana Linux tan TraceRoute programı çalışıyorum ve ben sorun IP_RECVERR eşdeğer bulmakta yaşıyorum.OSX eşdeğer IP_RECVERR
çoğu insan paket ayrıştırma yapmak yoludur: paket gelir çizgisinde bir şey yaptığım zaman sonra
setsockopt (sock, IPPROTO_IPV4, IP_RECVERR, &on, sizeof (on))
Ve:
sock_extended_err* err = nullptr;
for (cmsghdr* cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
switch (cmsg->cmsg_level) {
case IPPROTO_IPV4:
if (cmsg->cmsg_type == IP_RECVERR) {
err = (sock_extended_err*)CSMSG_DATA(cmsg);
}
break;
}
}
ayrıca sock_extended_err üzerinde yok OSX sorunlu. Gerçekten sadece bir hata olup olmadığını ve hatanın nereden kaynaklandığını bilmem gerek.
(yani dahili) muhtemelen' SO_ERROR' olurdu. –
"TTL 0'a var" hatasına sahip gibi görünmüyor. Kullandığınız – kmdent
'IP_RECVERR' o değer türünü çıkmıyor? Eğer gerçek TTL değerini elde etmek istiyorsanız, getsockopt (fd, SOL_SOCKET, SO_ERROR, & errcode, &len);, –