2014-12-24 6 views
-2

NetSec에 대한 책에서 일부 코드를 사용하고 있지만 알아낼 수없는 한 줄이 있습니다. 나는 파이썬 3을 잘 알고 있지만 2는 아닙니다.이 책은이 책이 편심합니다.Python 2.X의 쉼표는 변수를 선언 할 때 무엇을합니까?

코드는 다음과 같습니다

client,addr = server.accept() 

아주 솔직히, 도대체 이것은 무엇을 의미합니까? 프로젝트에 대한 전체 코드는 여기에 있습니다 :

라고
import socket 
import threading 

ip = "192.168.0.155" 
port = 9999 
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

server.bind((ip, port)) 

server.listen(5) 

print "* Listening on %s:%d" %(ip,port) 

def handle_client(client_socket): 

    request = client_socket.recv(1024) 
    print "* Received %s" % request 
client,addr = server.accept() 
    client_socket.send("Received: %s" % request) 


client,addr = server.accept() 
    client_socket.send("Received: %s" % request) 
    client_socket.close() 
    for each in request: 
     print each 

while True: 
    client,addr = server.accept() 
    print "* Received connection from %s:%d" % (addr[0], addr[1]) 
    client_handler = threading.Thread(target=handle_client, args=(client,)) 
    client_handler.start() 

답변

2

순서는을 풀고. server.accept()은 두 개의 변수 clientaddr에 압축을 푼 (socket, address) 튜플을 반환합니다. docs에서

그것은 상당의

temp= server.accept() 
client= temp[0] 
addr= temp[1] 

더 많은 정보를 원하시면.

+0

고맙습니다. 해피 홀리데이 및 행복한 코딩. –

+0

또한, "클라이언트"뒤에 쉼표를 사용하면 무엇을 할 수 있습니까? –

+0

client_handler = threading.Thread (target = handle_client, args = (client)) –

1

server.accept()가 tuple을 반환하고 해당 튜플의 값이 각각 client 및 addr에 할당됩니다. 단순화 된 예 :

> x,y = (1,2) 
> print(x) 
1 
> print(y) 
2 

이 파이썬에서 매우 일반적인 관용구이며, 나는 그것이에서 콤마에 관한


편집 파이썬 3

어떤 다른 생각하지 않습니다 .. .args = (클라이언트,))
여기를 참조하십시오 : Python tuple trailing comma syntax rule

관련 문제