Selam,
Gayet alengirli bir sahaya ilk adiminizi atmis bulunmaktasiniz :)

> - thread'e 1 client atandiktan sonra thread rutinindeki while'in donmesi 
> duruyor. ama hala o baglanan client'tan gelen verileri okuyabiliyor.

while'in donmesi duruyor derken neyi kastediyorsunuz? while'dan mi cikiyor
program takiliyor mu? 1. durumda kodun bir yerinde ya return ya da break
vardir, ikinci durumda da soket blocking mode'da oldugu icin buffer'inda
veri olmayan bir descriptor'da block olmustur.

> -socketin blocking oldugunu dusunerek nonblocking yaptigimda client'tan
>  data geldikten sonra sonra tekrar okumaya calistigimda -1 aliyorum.

errno ne?

> -her thread'e 1er client atandiktan sonra baglanan clientlarin isleri 
> yapilamiyor. yani recv ile gelen datayi alamiyorum.

recv ya hata doner, donmuyorsa da socket buffer'da veri yoktur.

> - thread rutinin icinde select(2) kullanmaya calistim fakat bu sefer bagli 
> clientlardan recv ile data alamiyorum.

Bence Ricahrd Stevens'in Unix Network Programming kitabini heen edinin
ve initial kisimlarini okuyun.

Ikinci tavsiyem de multithreaded bir server dizayni yerine, multiprocess
ve shared memory, pipe, message queue gibi IPC mekanizmalarini kullan
diginiz bir server dizayn edin. Multithreaded bir server programlamak,
gerektirdigi dikkat ve istedigi uzmanliktan dolayi su an icin sizin
icin bayagi basagrisi olabilir.

Murat

---------------------------------------------------------------------
Cikmak icin, e-mail: [EMAIL PROTECTED]
Liste arsivi: http://lists.enderunix.org ve 
http://www.mail-archive.com/freebsd@lists.enderunix.org
Turkiye'nin ilk FreeBSD kitabi: http://www.acikkod.com/freebsd.php


Cevap