witam. mam problem z czytaniem surowych danych z sieci. Pokaze to na przykladzie.

przyklad.
probuje napisac prosty sniffer, ktory czyta informacje z protokolu ICMP.
problem polega na tym, ze nie jestem w stanie wylapac pakiety wychodzace z mojego komputera (z jednym wyjatkiem*), jedynie tylko pakiety przychodzace. zasadnicza czescia programu jest nastepujaca petla do czytania pakietow, ktora nastepnie wypisuje otrzymane pakiety:

Kod:
while (read(sock,packet,sizeof(packet))>0)
efekty dzialania programu sa nastepujace:

dla localhosta*
Kod:
ICMP (Echo) from [192.168.1.2] to [192.168.1.2] with text: 12345
ICMP (Echo reply) from [192.168.1.2] to [192.168.1.2] with text: 12345
dla dowolnego zdalnego hosta (tutaj hack.pl)
Kod:
ICMP (Echo reply) from [89.161.184.235] to [192.168.1.2] with text: 12345
ja widac na pierwszym listingu, mamy zarowno pytanie, jak i odpowiedz. na drugim sama odpowiedz. pytania:
(1) dlaczego tak sie dzieje, ze program nie jest w stanie wylapac pakietow wychodzacych do zdalnych hostow?
(2) istnieje jakas inna funckja niz read() do czytania takich danych?

za wszelkie odpowiedzi, dziekuje.