2012-03-15 6 views
0

私はソケットプログラミングで複数のクライアントを扱うためのコードを作成していますが、私はアルゴリズムについても考えがありません。私は進行する方法を知らない。誰もアルゴリズムを教えてくれますか? ありがとうありがとうソケットプログラミングで複数のクライアントを処理するアルゴリズムは何ですか?

+3

"アルゴリズム"はおそらく "マルチスレッド"です... –

+0

unixまたはwindows? –

+0

マルチスレッド(pthreads)またはマルチプロセス(fork)です。 – twain249

答えて

0

私はApacheコードをダウンロードします。これはこれを実現し、合理的なアルゴリズムと思われます。

0

私は良いと思うのは、各スレッドが単一のポートまたは複数のポートで待機しているマルチスレッドサーバーを持つことです。

マルチプロセスサーバーを作成する可能性はありますが、マルチスレッドサーバーを使用することをお勧めします。理由はありますか?here

+0

まず、実際にはポートを認識している(accept()を呼び出す)スレッドが1つあります。第二に、マルチスレッドオーバーマルチプロセスを推奨することは、プレート上に何がないかを尋ねないでスプーン上にフォークを推薦することに似ています。 – bereal

0

おそらく、イベント駆動型モデル(select()など)またはマルチスレッドモデルを使用するようにしてください。それはあなたがしようとするものによって決まります。

-1

私はJavaで簡単なチャットを書いた。あなたはここにソースをチェックアウトすることができます: github.com/Samuirai/Java

基本設計は以下の通りです:

ServerSocket serverSocket = new ServerSocket(4444); 
System.out.println("Server started"); 
while (true) { 
    Socket client = serverSocket.accept(); 
    System.out.println("Client connected"); 
    ClientConnection conn = new ClientConnection(client, this); 
    this.connections.add(conn); 
    new Thread(conn).start(); 
} 

サーバーが接続するクライアントを待ちます。クライアントが接続すると、それはリストに新しい接続を追加し、クライアントとの接続を処理しスレッドを開始します。プロジェクトにチェックアウトする必要がある3つの重要なファイルがあります:ChatServerChatClient、およびClientConnectionです。 コードが分かりやすいことを願っています。

関連する問題