python 네트워크 프로 그래 밍 호출 recv 함수 전체 수신 데이터 의 세 가지 방법
1.기초 데이터 수신 법:
기본 데이터 수신 법 을 사용 할 때 서비스 socket 과 연결 을 끊 으 면 빈 문자열 을 받 습 니 다.따라서 이 특징 에 따라 프로그램 에 순환 을 넣 고 데이터 송신 단 이 socket 연결 을 닫 을 때 까지 데 이 터 를 계속 받 을 수 있 습 니 다.적용 장면:클 라 이언 트 와 서버 의 링크 는 짧 은 링크(즉,socket 통신 후 연결 이 닫 힙 니 다).코드 는 다음 과 같 습 니 다:
import socket,struct,sys,time
Port=22220
#assume a socket disconnect (data returned is empty string) means all data was #done being sent.
def recv_basic(the_socket):
total_data=[]
while True:
data = the_socket.recv(20480)
if not data: break
total_data.append(data)
return ''.join(total_data)
2.꼬리 표지 방법받 은 프로 토 콜 데이터 의 끝 표지 문자열 을 찾 아 완전한 데이터 메 시 지 를 가 져 옵 니 다.적용 장면:수 신 된 프로 토 콜 데이터 에 관련 된 꼬리 표 지 를 포함한다.코드 는 다음 과 같 습 니 다:
End='something useable as an end marker'
def recv_end(the_socket):
total_data=[];data=''
while True:
data=the_socket.recv(8192)
if End in data:
total_data.append(data[:data.find(End)])
break
total_data.append(data)
if len(total_data)>1:
#check if end_of_data was split
last_pair=total_data[-2]+total_data[-1]
if End in last_pair:
total_data[-2]=last_pair[:last_pair.find(End)]
total_data.pop()
break
return ''.join(total_data)3.부하 길이 방법즉,프로 토 콜 데이터 의 부하 길이 값 을 통 해 유효한 메시지 의 길 이 를 확정 하고 적용 장면:프로 토 콜 데이터 에 부하 프로 토 콜 필드 가 포함 되 어 있 습 니 다.이런 방법 도 비교적 자주 사용 되 고 통용 되 는 방법 이지 만 데 이 터 를 받 으 면서 데 이 터 를 분석 해 야 한다.코드 는 다음 과 같 습 니 다:
def recv_size(the_socket):
#data length is packed into 4 bytes
total_len=0;total_data=[];size=sys.maxint
size_data=sock_data='';recv_size=8192
while total_len<size:
sock_data=the_socket.recv(recv_size)
if not total_data:
if len(sock_data)>4:
size_data+=sock_data
size=struct.unpack('>i', size_data[:4])[0]
recv_size=size
if recv_size>524288:recv_size=524288
total_data.append(size_data[4:])
else:
size_data+=sock_data
else:
total_data.append(sock_data)
total_len=sum([len(i) for i in total_data ])
return ''.join(total_data)이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.