2017-05-17 1 views
0

저는 Python을 배우기 위해 간단한 TCP 채팅 응용 프로그램 server-client를 개발 중이며 사용할 데이터 구조에 대해서는 확신하지 못합니다.객체 목록에서 속성 목록을 반환하십시오.

서버 쪽 나는 client 클래스와 그 속성을 정의했습니다 : socket, username, room 및 online_status. 모든 클라이언트는 clients 목록에 추가되고 동시에 소켓은 connections 목록에 추가됩니다. 서버는 모든 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은 클라이언트 인스턴스의 목록이라고 가정하십시오.)

관련 문제