socket 이상
다음 코드는 직접 실행할 수 없습니다.sys.argv[1]에서 특정 서버 이름,sys로 변경.argv[2]에서 특정 포트 번호,sys로 변경.argv[3] 특정 파일 이름으로 바꾸어 테스트
PS:sys.argv[]는 명령행 매개 변수를 가져오는 데 사용되는sys.argv[0]는 코드 자체의 파일 경로를 표시하기 때문에 매개 변수는 1부터 시작합니다.
이 프로그램에서 이상 처리는 단지 우호적인 정보를 간단하게 출력하고 실행을 중지할 뿐이다.그것은 이 예에서 발생할 수 있는 모든 네트워크와 관련된 이상을 포착한다.Python의 socket 모듈은 실제로 다음과 같은 4가지 예외를 정의합니다.
socket.error는 일반적인 IO 및 통신 문제와 관련이 있습니다.
socket.gaierror 주소 정보 조회와 관련된
scoket.herror 다른 주소 오류와 관련된
scoket.timeout이 socket에서 settimeout () 를 호출한 후 시간 초과와 관련된
import socket, sys
host = sys.argv[1]
textport = sys.argv[2]
filename = sys.argv[3]
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, e:
print "Strange error creating socket: %s" %e
sys.exit(1)
try:
port = int(textport)
except ValueError:
try:
port = socket.getservbyname(textport, 'tcp')
except socket.error, e:
print "Couldn`t find your port: %s" %e
sys.exit(1)
try:
s.connext((host, port))
except socket.gaierror, e:
print "Address-related error connecting to server: %s" %e
sys.exit(1)
except scoket.error, e:
print "Connection error: %s" %e
sys.exit(1)
try:
s.sendall("GET %s HTTP/1.0\r
\r
" %filename)
except scoket.error, e:
print "Error sending data: %s" %e
sys.exit(1)
while 1:
try:
buf = s.recv(2048)
except socket.error, e:
print "Error receiving data: %s" %e
sys.exit(1)
if not len(buf):
break
sys.stdout.write(buf)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springboot 프로젝트에서 layui와 Thymeleaf 데이터 테이블에 문제를 표시할 수 없습니다springboot 프로젝트에서 layui와 Thymeleaf 데이터 테이블에 문제를 표시할 수 없습니다 해결 방법:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.