2017-05-17 19 views
0

私はPythonを学ぶために単純なTCPチャットアプリケーションserver-clientを開発していますが、使用するデータ構造についてはわかりません。オブジェクトのリストから属性のリストを返します

サーバー側私はclientクラスとその属性(ソケット、ユーザー名、ルーム、オンライン状態)を定義しました。すべてのクライアントはclientsリストに追加され、同時に、そのソケットはconnections listに追加されます。サーバーは、すべてのclientオブジェクトのすべてのsocketをリストし、私は本当に持っていることを

(ready_to_read, _, _) = select.select(list(client.socket), [], []) 
+0

私が提案したものには明らかな欠陥はありませんが、コンテキストがありません。あなたの提案したコードを試しましたか?文書化された[select.select](https://docs.python.org/3/library/select.html#select.select)は、あなたが望むことをしています。あなたの質問には何が少しあると思いますが、 'clients.socket'のリストを生成したいでしょうか?より多くのコードは確かにあなたの質問に答えるのを助けるでしょう。 – msw

+0

そうです。私は、クライアントクラスリストを持っているときに 'connections'という別のリストを作成しません。最初のコードが動作しています。私の問題は 'client.socket'構文が正しくない、常に' client'に 'socket'属性がありません。だから、正しい質問はどのようにすべてのオブジェクトインスタンスの属性をリストするのだろうか? – Pere

答えて

1

わからないように行うにはどのような方法があります次の宣言

(ready_to_read, _, _) = select.select([server_socket] + list(connections), [], []) 

を使用して着信メッセージを聞いて、常に、真のループ内で実行されますあなたが望むものを理解していますが、クライアントインスタンスのリストからソケットのリストを作成すると仮定すると、リスト内包を使用することができます。

(ready_to_read, _, _) = select.select([client.socket for client in clients], [], []) 

clientsはクライアントインスタンスのリストと仮定します)

関連する問題