홈>
이것은 python-wiki의 UDP-Server-Example에 따른 제 UDP-Server입니다.
# ----- receiver.py -----
#!/usr/bin/env python
from socket import *
import sys
import select
host="192.168.88.51"
port = 1337
s = socket(AF_INET,SOCK_DGRAM)
s.bind((host,port))
addr = (host,port)
buf=128
data,addr = s.recvfrom(buf)
print "Received File:"
f = open("out.jpg",'wb')
data, addr = s.recvfrom(buf)
try:
while(data):
f.write(data)
s.settimeout(1)
data,addr = s.recvfrom(buf)
except timeout:
f.close()
s.close()
print "File Downloaded"
이 코드는 정상적으로 작동하며 한 번에 하나의 파일을받을 수 있습니다. 그러나 여러 클라이언트가 있고 모든 파일이 수신되기를 원하므로 새로운 IP 연결이 이루어질 때마다 (한 특정 IP에서).
어떤 제안?- 답변 # 1
먼저 비동기 서버를 원한다면
sockets
로 처음부터 글을 쓰지 않는 것이 좋습니다. . 대신,asyncio
같은 패키지를 사용 또는Twisted
.문제에 관해서는 TCP 중심 소켓을 사용하는 것이 더 편리하므로
SOCK_STREAM
를 사용해야합니다. 대신 UDP 형SOCK_DGRAM
의 .먼저 다운로드 기능을 정의하십시오 :
상수 (호스트 이름, 포트 번호 등)를 설정 한 후 다음과 같은 작업을 수행하십시오 (
from threading import Thread
수행). 먼저!) :