Re: [Linux-programlama] accept() fonksiyonu... Çözüldü.

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Cem Vedat ISIK (cvi.list@gmail.com)
Date: Fri 16 Feb 2007 - 21:32:17 EET


Merhaba Caglar Bey,
Benim de gün içerisinde aklıma thread struct'inin icinde, bir state ve
soket tutmak gelmisti. State'i uygun olan thread'in soketini kullanan
bir yapi ile sorunu çözmüştüm.
Ilginiz ve yardimlariniz icin cok tesekkur ederim.
Iyi calismalar ve guzel gunler dilerim.

Google icin anahtar kelimeler: soket, socket, pthread_create(), accept()

On 16/02/07, Çağlar AKYÜZ <caglar@bilkon-kontrol.com.tr> wrote:
> Cem Vedat ISIK yazmış:
> >
> > pthread_create ile cagirdigim, process_xxx'a gelen newSock degeri ayni
> > oldugundan, aklima ilk gelen accept()'in ayni socket degerini
> > dondurdugu geldi. Isin ilginc yani, bu her zaman olan bir durum
> > degil.
> >
> > Bu maili yazarken, Caglar Bey'in bahsettigi durumun olusup
> > olusmadigini simdi debug mesaji ekleyerek test ettim. Sunucu
> > uygulamami debug modda calistirdigimda,
> >
> > : socket created with no: 63
> > : socket created with no: 64 ( evet, sevgili Caglar Bey'in dedigi
> > gibi, socket'ler farkli yaratiliyor.)
> > : thread created 64
> > : thread created 64 ( ancak thread'e giderken ayni socket gidiyor )
> >
> > [......]
> > : thread exited 64
> > : thread exited 64 ( gercekten de oyle... )
> >
> > Simdi en azindan accept()'in dogru calistigini biliyorum. Pekiyi,
> > pthread_create'e arguman olarak gelen newSock'un thread sonlanana
> > kadar hafizada kalacagini nasil garanti edebilirim?
> > Yardimlariniz icin simdiden cok tesekkurler.
>
> Tek bir değişken kullanmak yerine bir dizi kullanmak sorunu çözer gibime
> geliyor. Yani;
>
> /listen( receiverSock, MAX_CONNECTIONS ); // MAX_CONNECTIONS is max.
> length of queue of pending connections
> /* MAX_CONN beklenen en fazla bağlantı sayısı olsun */
> int newSock[MAX_CONN];
> /* Gelen bağlantıları sayamak için bir sayıcı */
> int sock_cnt = 0;
>
> while ( 1 ) // listens connections and accepts them to newSock
> {
> /* Bağlantıyı kabul et ve sayıcımızı artır */
> newSock[sock_cnt++] = accept( receiverSock, (struct sockaddr *)
> &servAddr, &servLen );
> /* Yeni thread'i yarat ve en son gelen bağlantı isteğini parametre
> olarak geç */
> pthread_create( &sql_tid, NULL, ( void *)process_xxx,
> &newSock[sock_cnt - 1] );
> } /
>
> Umarım bu küçük değişiklik sorunu çözer.
>
> Saygılarımla
> Caglar AKYUZ
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>

-- 
Cem Vedat ISIK
http://isik.net

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.