PDA

Tam Sürümünü Görmek İçin : Socket read return etmiyor!


cevizkiran
07/05/2006, 11:29
read system call' i return etmiyor. ve thread o read de takili kaliyor. Aslinda su
anda bir crawler uzerinde calisioyrum, 50 tane thread sayfa indirmekle sorumlu.
Bir sure sonra butun threadler read system call da takiliyor ve sayfa indirmeyi kesiyor. program da olmuyor diger DNS resolve eden threadler calismaya devam ediyor. bu read system call'a timeout nasil koyabilirim. select() function hakkinda okudum internetten, ama bir thread yuzlerce socket create ediyor herseferinde select()'deki fd-seti nasil update ederim, gibi bir suru soru aklima geliyor isin icinden cikamadim. select'i nasil kullanabilrim yada read'e timeout koymanin baska bir yolu var mi acaba?

Yardimci olursaniz sevinirim.

akf.


Revne
08/05/2006, 17:09
Select Fonksiyonuna buradan (http://www.scit.wlv.ac.uk/~jphb/comms/sockets.html)ulasabilirsin...

Suan bulamadım ama eger istersen sana ornek uygulamada gonderebilirim.
Kolay Gelsin...

serimc
08/05/2006, 17:13
sorun biraz karısık ama sunu soyleyebilrim sana 50 thread çok büyük bir rakam..Net frameworkteki threadpool bile (tam hatırlamıyorum ama) 20-30 arasında thread kabul ediyordu.

Bunun yerine kodunu tamamen asenkron yazmalısın.Bunun için sana 2 tane link vereyim umarım faydasını görürüsün.

http://www.codeguru.com/csharp/csharp/cs_network/sockets/article.php/c7695/
http://www.codeguru.com/csharp/csharp/cs_network/sockets/article.php/c8781/

calavera
08/05/2006, 17:45
http://www.belgeler.org/bgnet/bgnet.html (http://www.belgeler.org/bgnet/bgnet.html) adresinde ag programlama ile ilgili guzel bir dokuman var, gozatmani tavsiye ederim. Soketler ve select() kullanimi ile ilgili detayli bilgiler veriyor.