Python 을 사용 하여 간단 한 HTTP 와 FTP 서 비 스 를 만 듭 니 다.
6700 단어 python
업무 중 에 도 다른 장소 에서 도 파일 공유 에 대한 수요 가 자주 발생 한다. 예 를 들 어 자신 이 4GB 의 게임 을 내 렸 고 동료 가 800 MB 의 소프트웨어 를 내 렸 다. 다른 사람들 도 이런 파일 이 필요 하 다 면 직접 공유 하 는 것 이 가장 빠 르 고 편리 하 며 친 환경 적 인 방식 이다. 다시 내리 면 시간 도 낭비 하고 전기 도 낭비 할 것 이다.Windows 는 폴 더 공유 기능 을 가지 고 있 습 니 다. 그러나 이 물건 은 아직 까지 자세히 고생 한 적 이 없고 원 리 를 이해 하지 못 했 습 니 다. 저 는 FTP 를 사용 하여 파일 을 공유 해 왔 습 니 다. 필요 하 다 면 HTTP 서 비 스 를 하 는 것 도 충분히 대처 할 수 있 습 니 다. 제 목적 은 파일 공유 일 뿐 이 고 간단 하고 사용 하기 쉬 운 것 이 제 주요 관심 사 입 니 다.
이런 수 요 는 반드시 매우 보편적 이 고 해결 방법 도 다양 하 다.예 를 들 어 비둘기 가 책 을 전달 하거나 QQ, 또는 각종 랜 통신 소프트웨어 와 네트워크 디스크 가 모두 가능 합 니 다. 그러나 이런 것들 은 모두 점 대 점 의 조작 이 필요 합 니 다. 즉, 상대방 이 어떤 서 류 를 필요 로 하 는 지 이 서 류 를 보 내야 합 니 다. 한 사람 이 많 으 면 한 번 더 보 내야 합 니 다. 다시 사용 할 수 없습니다. 프로그래머 에 게 는 받 아들 일 수 없고 반복 적 으로 수 치 스 럽 습 니 다!저 는 파일 서버 가 이런 수요 에 더욱 부합된다 고 생각 합 니 다. 현재 많은 성숙 한 소프트웨어 가 이러한 수 요 를 편리 하 게 실현 할 수 있 습 니 다. 예 를 들 어 FTP 는 FileZilla 을 선택 할 수 있 고 HTTP 는 Apache, Nginx 를 선택 할 수 있 습 니 다. 물론 성숙 은 복잡 하고 더 큰 학습 비용, 더 많은 디스크 점용 을 의미 합 니 다. 당신 의 수요 의 복잡 도 를 볼 수 있 습 니 다.
죽 을 때 까지 고생 하 다.
자, 저 는 설명 이 필요 합 니 다. 저 는 괴 롭 히 는 것 을 좋아 하 는 사람 입 니 다. 복잡 하고 학습 원가 가 높 아 보 이 는 일 을 간단 하고 사용 하기 쉬 운 것 이 제 궁극 적 인 취미 입 니 다. 이 글 은 바로 이런 괴 롭 힌 결과 물이 고 목적 을 직접 달성 하고 자 합 니 다. 성숙 한 소프트웨어 는 당신 의 가장 좋 은 귀착점 입 니 다.괴 롭 히 는 것 을 좋아한다. 프로그래머 가 좋아 하 는 말 은 복잡 한 실현 을 좋 은 이름 의 인터페이스 에 숨 기 는 것 이다.다시 말 하면 자동차 내부 의 구조 가 우수 하고 구조 가 복잡 하 며 핸들, 브레이크 와 액셀러레이터 만 조작 하면 이 를 잘 조종 할 수 있다. 이것 은 모두 이런 우호 적 인 인터페이스 가 이 루어 진 덕분이다.
같은 일 은 한 번 만 있 으 면 된다.평소에 코드 를 쓰 는 것 도 마찬가지다.만약 내 가 다른 사람 이 제공 하 는 인터페이스 가 필요 하 다 면, 나 는 이 인 터 페 이 스 를 사용 하 는 것 이 가능 한 한 간단 하 기 를 바란다. 나 는 어떤 인 터 페 이 스 를 호출 하고 어떤 인 자 를 전달 하 는 지 만 알 면 된다.저 는 코드 를 작성 할 때 반드시 이런 생각 에 따라 사용자 가 제 가 어떻게 실현 하 는 지 에 관심 을 가 져 야 한다 고 생각 하지 않 습 니 다. 그것 은 제 문제 입 니 다. 사용자 가 관심 을 가 져 야 할 것 은 이 인터페이스 가 무엇 을 하 는 지, 어떤 매개 변수 가 필요 한 지, 돌아 올 수 있 는 결과 와 던 질 수 있 는 오류, 분업 이 명확 하고 불필요 한 소통 을 줄 여야 합 니 다.
저 는 앞의 글 에서 Python - 지정 한 폴 더 의 as 파일 의 완전 한정 클래스 내 보 내기 을 언급 했 습 니 다. 좋 은 점 은 더 이상 말 하지 않 겠 습 니 다. 한 글자, 섹시!공교롭게도 나 는 이 파일 공유 기능 을 괴 롭 혔 을 때 그 를 만 났 고, 이 기 회 를 빌려 HTTP 와 FTP 방면 의 내용 을 다시 한 번 복습 했다.
파 이 썬 버 전 HTTP 서버
잡담 은 그만 하고 먼저 Python 을 설 치 했 는 지 확인 하 세 요. 저 는 2. x 버 전 을 설 치 했 습 니 다. 맞습니다. 제 운영 체 제 는 WIN 7 입 니 다. 사실은 Python 에 게 어떤 운영 체제 가 중요 하지 않 습 니 다.Python 에 간단 한 HTTP 서버 가 내장 되 어 있 습 니 다. 명령 행 아래 에서 명령 을 두 드 리 기만 하면 HTTP 서버 가 일어 납 니 다.
python -m SimpleHTTPServer 80
뒤의 80 포트 는 선택 할 수 있 으 며, 채 우지 않 으 면 부족 한 포트 8000 을 사용 할 것 이다.현재 있 는 폴 더 를 기본 웹 디 렉 터 리 로 설정 하고 브 라 우 저 에서 이 컴퓨터 주 소 를 입력 해 보십시오.
http://localhost:80
현재 폴 더 에 index. html 파일 이 있 으 면 이 파일 을 기본적으로 표시 합 니 다. 그렇지 않 으 면 디 렉 터 리 에 있 는 모든 파일 을 파일 목록 으로 표시 합 니 다.이렇게 하면 가장 기본 적 인 파일 공유 의 목적 을 실현 할 수 있 습 니 다. 스 크 립 트 를 만 들 고 단축 키 를 만 들 면 파일 공 유 를 편리 하 게 시작 할 수 있 습 니 다.더 많은 수요 가 있 으 면 자신의 수요 에 따라 맞 춤 형 제작 을 할 수 있 습 니 다. 구체 적 인 것 은 공식 문서 SimpleHTTPServer 를 참조 하거나 소스 코드 를 직접 보 세 요.나 는 한 단락 을 복사 해서 참고 하기 편리 하 다.
import SimpleHTTPServer
import SocketServer
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
파 이 썬 버 전 FTP 서버
이 곳 을 보면 기본적으로 Python 이 설치 되 어 있 지만 다른 좋 은 도 구 를 설치 해 야 합 니 다.Chrome 플러그 인 을 찾 아야 할 때 Google 웹 스토어 로 가 는 것 을 알 고 있 습 니 다.Firefox 애플 리 케 이 션 을 찾 아야 할 때 Mozilla 의 add - ons 로 갑 니 다.Python 구성 요 소 를 찾 아야 할 때 pip:A tool for installing and managing Python packages 설치 방법 은 소개 하지 않 습 니 다.
Python 에 직접 사용 할 수 있 는 FTP 서버 가 내장 되 어 있 지 않 기 때문에 제3자 구성 요소 의 지원 이 필요 합 니 다. 제 가 찾 은 이 구성 요 소 는 pyftpdlib 입 니 다. 먼저 설치 하 십시오.
pip install pyftpdlib
설치 후 HTTP 서버 와 유사 합 니 다. 다음 명령 을 실행 하면 FTP 서버 를 시작 할 수 있 습 니 다.
python -m pyftpdlib -p 21
뒤의 21 포트 는 여전히 선택 할 수 있 습 니 다. 채 우지 않 으 면 무 작위 로 사용 되 고 사용 되 는 포트 는 건 너 갑 니 다.브 라 우 저 에서 이 컴퓨터 주 소 를 입력 하 십시오:
ftp://localhost:21
이때 익명 으로 접근 합 니 다. 즉, 사용자 이름 은 anonymous 입 니 다. 비밀 번 호 는 비어 있 습 니 다. 접근 권한 을 제어 하려 면 서버 를 맞 춰 야 합 니 다. 구체 적 인 것 은 pyftpdlib Tutorial 을 참조 하 십시오. 제 가 여기 서 복사 해서 소개 하 겠 습 니 다.
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
def main():
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and a read-only
# anonymous user
authorizer.add_user('user', '12345', '.', perm='elradfmwM')
authorizer.add_anonymous(os.getcwd())
# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer
# Define a customized banner (string returned when client connects)
handler.banner = "pyftpdlib based ftpd ready."
# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535)
# Instantiate FTP server class and listen on 0.0.0.0:2121
address = ('', 2121)
server = FTPServer(address, handler)
# set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()
if __name__ == '__main__':
main()
코드 만 보면 어떻게 사용 해 야 하 는 지 기본적으로 알 수 있 을 것 입 니 다. adduser 는 분명히 사용 자 를 추가 하 는 것 입 니 다. 2121 은 지정 한 포트 입 니 다. 물론 무 작위 로 도 사용 할 수 있 습 니 다. 그리고 최대 연결 수 maxcons 도 있 습 니 다. 모든 ip 의 최대 연결 제한 은 docstring 을 직접 보 는 것 이 좋 습 니 다.
후기
Python 제3자 구성 요 소 는 큰 보고 입 니 다. 기본적으로 제 가 직면 한 대부분의 문 제 는 이 안에서 해결 문안 을 찾 을 수 있 습 니 다.또한 괴 롭 히 기 를 좋아 하 는 프로그래머, 심지어 프로그램 배경 이 없 는 IT 직원 들 도 이 언어 를 배 워 보 는 것 이 문제 해결 능력 과 사고 단련 에 큰 도움 이 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.