2013-07-09 4 views
1

파이썬에서 한 클라이언트에 다중 서버 소켓을 만드는 방법은 무엇입니까? 서버 소켓 목록을 작성하고 비 블로킹 소켓 과의 연결을 생각하고 있지만 좋은 튜토리얼을 찾지 못했습니다. 왜 여기 왔습니까? 더 나은 솔루션이나 가이드를 요청하십시오. 비 블로킹 소켓.파이썬에서 한 클라이언트에 다중 서버 소켓을 만드는 방법은 무엇입니까?

감사합니다. = [ '127.0.0.1'

SERVER_IP, '127.0.0.2', '127.0 :


도움에 대한 감사합니다,하지만 난 뭔가 다른 의미, 그와 같은 서버의 IP 목록을 가지고있다. 0.3 ','127.0.0.4 ','127.0.0.5 ','127.0.0.6 ', 127.0.0.7']

ip로 소켓 목록을 만들고 모든 IP에 연결하려고합니다. 서버,하지만 내가 여기에 소켓의 목록없이 모든 서버 Ip에 연결하는 다른 방법이 있다면, 더 편리한 것이 있습니다.

감사합니다.

답변

2

여러 서버에 연결된 여러 개의 소켓을 가지고 싶다면, 당신은 select 모듈 (http://docs.python.org/2/library/select.html)를 확인해야한다.

기본적으로, 다음과 같이 작동

import socket, select 
socks = {} 
# Connect to different servers here # 
sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
socks[sock1.fileno()] = sock1 
poll = select.poll() 
for sock in socks: 
    poll.register(sock) 
while 1: 
    fd, event = poll.poll() # Optional timeout parameter in seconds 
    sock = socks[fd] 
    sock.recv(1024) # Do stuff 

메모는 poll.poll() 방법은 당신에게 쓸모가 없다 (운영 체제 파일을 나타 내기 위해 사용하는 것) 기본 파일 수를 반환합니다. 나는 그 번호로 사전에 소켓을 저장하기 때문에 poll에 의해 주어진 파일 번호에서 실제 소켓 객체를 얻을 수있다. 위의 링크 인 select.poll에 대한 설명서를 읽는 것이 좋습니다.