[kansaipm] Socketについて教えてください

yuhashimoto yuhashimoto at hi-ho.ne.jp
Tue Dec 25 01:15:12 CST 2001


橋本@神戸です。 

ソケットとセレクトを使ったapacheで動く、cgiプログラムを作っています。 
1週間ほど悩んでいます。何かヒントでもありましたら、よろしく。  

同時に 複数のクライアントから、アクセスしたとき、正しいクライアントに
返らず、他のクライアントが横取りしてしまうという現象に悩まされています。
いくつかは、正しい、クライアントに返るのですが、いくつかは要求を出し
たのとは、別のクライアントに返ります。 

サーバ側(C言語) 
socket
bind
listen
ループで、 
  select
  accept

クライアント側(perl)
use Socket;
socket
connect

です。1つのクライアントからのアクセスではうまくいくのです。 
サーバ側はIPアドレス(127.0.0.1)+ポートは決めうちです。 
クライアント側IPアドレスは、127.0.0.1、
ポートは、netstatで見ると、1028番、1030とか、2番毎に、自動発生している 
ようです。ファイルディスクリプタも、サーバ側では、クライアント毎に異なっ
た 
ID (4とか 5とか連番)が付けられています。クライアント側は、どうすれ
ば、 
自分のデータだけを受け取れるのでしょうか。クライアントも、IPアドレスと
ポートではないのでしょうか。
selectを使わず、 forkを使おうとしたら、 waitpidで子プロセスを殺さず、次
の 
クライアントからの要求のため、acceptの待ちに入っていいのでしょうか。



More information about the Kansai-pm mailing list