10일간의 코드: 작업 2
작업-2
날짜: 10월 4일-20일
코드: task2_arnabsen1729
문제 설명
하위 작업-1
첫 번째 클라이언트와 서버를 만들어 봅시다. 간단한 구현부터 시작하겠습니다. 서버는 단순히 에코합니다
그것이 클라이언트에게 다시 수신하는 모든 것.
하위 작업-2
이제 이 부분에서 서버는 스레딩을 통해 달성할 수 있는 둘 이상의 클라이언트를 동시에 처리합니다.
나의 접근
Subtask-1은 매우 간단하며 이번에는 서버가 클라이언트가 보내는 모든 내용을 에코한다는 사실을 제외하면 첫 번째 작업과 거의 비슷합니다.
하위 작업-2는 하위 작업-1의 확장입니다. 이 하위 작업에는 스레딩에 대한 기본 지식이 필요합니다. 멘토님이 가이드를 해주셨어요(하단에 링크 제공). 이제 스레딩이 필요한 주된 이유는 하나의 클라이언트를 처리할 때 기본적으로 무한 루프인 데이터를 지속적으로 수신하고 전송하기 때문입니다. 이제 이것이 진행되는 동안 일반적으로 프로그램은 루프에 갇혀 있기 때문에 다른 클라이언트를 수락할 수 없습니다. 따라서 클라이언트에 대한 각 연결은 스레드되고 해당 스레드는 동시에 실행됩니다. 기본적으로 하나의 클라이언트(스레드) 때문에 다른 클라이언트는 기다릴 필요가 없습니다. 이것이 이 문제에 스레드가 필요한 주된 이유입니다. 이제 스레드를 처리하는 다양한 방법이 있습니다. 가장 쉬운 방법 중 하나는
t = threading.Thread(target=myFunction, [args=(arg1, arg2, ...)])
t.start()
ThreadPoolExecutor
를 사용할 수도 있으며 concurrent.futures
의 표준 라이브러리의 일부입니다.이제 이 모든 작업을 서버 측에서 수행해야 합니다. 클라이언트 측은 동일하게 유지됩니다.
추신 subtask-2 폴더에
test.py
파일이 있는데, 다른 클라이언트 스크립트이지만 무한 루프에서 동일한 메시지를 보냅니다. 그래서 서버 스크립트를 실행한 다음 이 테스트 스크립트를 실행한 다음 일반 클라이언트 스크립트를 실행했습니다. 그래서 테스트 스크립트가 같은 것을 계속해서 보내는 동안 클라이언트 스크립트에서 일부 메시지를 입력했고 서버는 이를 다시 에코했습니다. 따라서 스레딩은 매력처럼 작동했습니다.견본
하위 작업-1
하위 작업-2
자원
훌륭한 안내를 제공한 @lugnitdgp에게 감사합니다 <3
Reference
이 문제에 관하여(10일간의 코드: 작업 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arnabsen1729/ten-days-of-code-task-2-480p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)