Re: [Linux-programlama] accept() fonksiyonu...

---------

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

From: Çağlar AKYÜZ (caglar@bilkon-kontrol.com.tr)
Date: Fri 16 Feb 2007 - 17:11:37 EET


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


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

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.