• ベストアンサー

TCP通信による1サーバ、複数クライアントモデル

TCP通信による1サーバ、複数クライアントモデル(チャット等)をwinsockを使用して作成したいのですが、複数のクライアントからサーバにアクセスする方法がわかりません。マルチスレッドで、クライアントからの受信待ちスレッドと、ログイン中クライアントへのメッセージ送信スレッドが必要(?)なんでしょうか?また具体的なソースなど掲載されているページがありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mssine
  • ベストアンサー率24% (38/156)
回答No.1

マルチスレッドにしなくても出来ますよ。 acceptまでのSOCKET(接続受付用)を1個と acceptの戻り値のSOCKET(send/recv用)をn個入れる器があれば、シングルタスクでチャットサーバが出来ます。 #define MAX_CLIENTS 512; SOCKET a,d[MAX_CLIENTS]; int clients=0; a=socket(....); bind(a,.....); listen(a,.....); で待っていて、接続要求があれば d[clients]=accept(a,......); clients++; 後はd[0~clients]まで受信要求の有無を見てて、 要求があれば、recvして、 d[0~clients]にsendしてあげれば良いです。 参考URLは色々参考になります

参考URL:
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/chatserv.html

関連するQ&A