Python Asyncio Telnet 연결이 즉시 분리됩니다. 서버 측 차단 문제를 해결하는 방법은 무엇입니까?
Python Asyncio Telnet Connection 연결 연결 : 서버 측 차단 문제에 대한 분석 및 솔루션
Python의 Asyncio 라이브러리를 사용하여 웹 서버를 구축 할 때는 종종 연결 직후 Telnet 클라이언트를 연결 해제하는 문제가 발생합니다. 이 기사는이 문제를 분석하고 효과적인 솔루션을 제공합니다.
문제 설명 :
Telnet 클라이언트를 사용하여 연결 한 후 간단한 Asyncio TCP 서버는 즉시 "외국 호스트에 의해 닫힌 연결"오류가 표시되어 서버가 연결을 활성으로 닫았다는 것을 나타냅니다. 문제의 근본 원인은 서버 측 처리 기능 차단에 있습니다.
원본 코드 (문제가 있음) :
Asyncio 가져 오기 asyncio.base_events import Server에서 Async def handle_client (Reader, Writer) : 사실이지만 : data = await reader.readline () 데이터가 아닌 경우 : 부서지다 Writer.write (데이터) Writer.close () Async def main () : 서버 : 서버 = await asyncio.get_running_loop (). create_server ( handle_client, '127.0.0.1', 8888) 서버와 비동기 : Await Server.serve_forever () asyncio.run (main ())
reader.readline()
메소드는 Newline ( '\ n')을 읽을 때까지 차단됩니다. Telnet 클라이언트는 연결이 성공한 직후에 데이터를 보내지 않으므로 reader.readline()
이 무기한으로 차단되므로 결국에는 Time Out이 연결되어 서버가 닫히게됩니다.
해결책:
개선 된 handle_client
함수는 연결이 설정된 직후에 환영 메시지를 보냅니다. 그리고 reader.readline reader.readline()
reader.read(100)
사용하여 최신 라인을 차단하고 기다리지 않습니다. await writer.drain()
데이터가 올바르게 전송되도록합니다.
개선 된 코드 :
Async def handle_client (Reader, Writer) : Welcome_message = "서버에 오신 것을 환영합니다! \ n" Writer.write (Welcome_Message.encode ()) Await Writer.drain () 사실이지만 : data = await reader.read (100) 데이터가 아닌 경우 : 부서지다 Writer.write (데이터) Await Writer.drain () Writer.close ()
이러한 수정을 통해 Telnet 클라이언트는 서버에 성공적으로 연결하고 정상적으로 상호 작용할 수 있습니다. reader.read(100)
는 최대 100 바이트의 데이터를 읽으며 클라이언트가 신성을 보내지 않아도 차단을 피할 수 있더라도 계속 실행할 수 있습니다. await writer.drain()
은 데이터가 클라이언트로 완전히 전송되고 데이터 손실을 피하십시오.
위의 분석 및 코드 개선을 통해 Python Asyncio Telnet 연결 문제를 즉시 연결 해제하고보다 안정적이고 안정적인 네트워크 서버를 구축 할 수 있습니다.
위 내용은 Python Asyncio Telnet 연결이 즉시 분리됩니다. 서버 측 차단 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

2025 년 전 세계의 상위 10 개 암호 화폐 교환에는 Binance, Okx, Gate.io, Coinbase, Kraken, Huobi, Bitfinex, Kucoin, Bittrex 및 Poloniex가 포함됩니다.

비트 코인의 가격은 $ 20,000에서 $ 30,000입니다. 1. Bitcoin의 가격은 2009 년 이후 극적으로 변동하여 2017 년에 거의 20,000 달러에 이르렀으며 2021 년에는 거의 60,000 달러에 달합니다. 가격은 시장 수요, 공급 및 거시 경제 환경과 같은 요인의 영향을받습니다. 3. 거래소, 모바일 앱 및 웹 사이트를 통해 실시간 가격을 얻으십시오. 4. 비트 코인 가격은 시장 감정과 외부 요인에 의해 유발되는 변동성이 높습니다. 5. 전통적인 금융 시장과의 특정 관계가 있으며 글로벌 주식 시장, 미국 달러의 강점 등의 영향을받습니다. 6. 장기 추세는 낙관적이지만, 위험은주의해서 평가되어야합니다.

전 세계의 상위 10 개 암호 화폐 거래 플랫폼에는 Binance, OKX, Gate.io, Coinbase, Kraken, Huobi Global, Bitfinex, Bittrex, Kucoin 및 Poloniex가 포함되며 다양한 거래 방법과 강력한 보안 조치가 제공됩니다.

Binance, Okx, Gate.io와 같은 상위 10 개 디지털 환전 거래소는 시스템, 효율적인 다양한 거래 및 엄격한 보안 조치를 개선했습니다.

현재 10 개의 가상 환전 거래소 중 하나입니다. 1. Binance, 2. OKX, 3. Gate.io, 4. Coin Library, 5. Siren, 6. Huobi Global Station, 7. Bybit, 8. Bitcoin, 10. 비트 스탬프.

C의 DMA는 직접 메모리 액세스 기술인 DirectMemoryAccess를 말하며 하드웨어 장치는 CPU 개입없이 데이터를 메모리로 직접 전송할 수 있습니다. 1) DMA 운영은 하드웨어 장치 및 드라이버에 크게 의존하며 구현 방법은 시스템마다 다릅니다. 2) 메모리에 직접 액세스하면 보안 위험이 발생할 수 있으며 코드의 정확성과 보안이 보장되어야합니다. 3) DMA는 성능을 향상시킬 수 있지만 부적절하게 사용하면 시스템 성능이 저하 될 수 있습니다. 실습과 학습을 통해 우리는 DMA 사용 기술을 습득하고 고속 데이터 전송 및 실시간 신호 처리와 같은 시나리오에서 효과를 극대화 할 수 있습니다.

오늘날 Bitcoin의 가격 변동은 거시 경제학, 정책 및 시장 감정과 같은 많은 요인의 영향을받습니다. 투자자는 정보에 입각 한 결정을 내리려면 기술 및 기본 분석에주의를 기울여야합니다.

C에서 Chrono 라이브러리를 사용하면 시간과 시간 간격을보다 정확하게 제어 할 수 있습니다. 이 도서관의 매력을 탐구합시다. C의 크로노 라이브러리는 표준 라이브러리의 일부로 시간과 시간 간격을 다루는 현대적인 방법을 제공합니다. 시간과 C 시간으로 고통받는 프로그래머에게는 Chrono가 의심 할 여지없이 혜택입니다. 코드의 가독성과 유지 가능성을 향상시킬뿐만 아니라 더 높은 정확도와 유연성을 제공합니다. 기본부터 시작합시다. Chrono 라이브러리에는 주로 다음 주요 구성 요소가 포함됩니다. std :: Chrono :: System_Clock : 현재 시간을 얻는 데 사용되는 시스템 클럭을 나타냅니다. STD :: 크론
