> normalde bildiginiz uzere soket fonksiyonu root yetkisi ile calistirilan bir fonksiyon,
Biz böyle bir fonksiyon bilmiyoruz. Biz bilmiyorsak, emin olabilirsiniz ki, öyle bir fonksiyonda yoktur ortada :) > c ile udp uzerinden data gonderen Yani size UDP soketi lazım (SOCK_DGRAM) > if ((sd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) Ama siz raw soket açıyorsunuz. > fprintf(stderr,"socket() error, root ?\n"); Bu satırı şu hale çevirip çalıştırmayı deneyin: fprintf(stderr,"socket() error:%d '%s' root ?\n", errno, strerror(errno)); Bunu yaptıktan sonra yazan mesaja bakarsanız, sorunun ne olduğu daha kolay anlaşılabilecektir. Bir ihtimal kernelde RAW soket desteği yoktur vs. getcap() ile bir kontrol edebilirsiniz. 2011/5/13 Cihat YILDIZ <[email protected]> > Merhabalar > > c ile udp uzerinden data gonderen bir uygulama yapmaya calisiyorum. Ancak > cok ilginc bir hata aldim. > normalde bildiginiz uzere soket fonksiyonu root yetkisi ile calistirilan > bir fonksiyon, > normal bir kullanici ile bu fonksiyou calistirmak istediginizde size -1 > degeri gonde ver siz bunu calistiramazsiniz. > > Benim karsilastigim hata ise ayni problemi root olarak yasamak. root > kullanicisi ile programi calistirmak istedigimde > yine fonksiyon bana -1 degeri ile donus yapiyor. > > fonksiyonu su sekilde kullaniyorum. > > if ((sd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) // root privilege > required > { > fprintf(stderr,"socket() error, root ?\n"); > exit(1); > } > --- > Cihat YILDIZ > Electronics Engineer > > > > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > >
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
