(드릴 수 있는게 기프티콘 밖에 없네요,,) 파이썬 입니다.
stop and wiat 센더
from threading import Timer
import random
import time
from socket import *
timeout = 5
clientSocket = socket(AF_INET,SOCK_DGRAM)
seqnum=0 #데이터 순서
count=int(input("몇개 데이터 전송?"))
RTT=(1000**-1)*float(input("RTT?(ms)"))#ms를 초로 변환
i=0
clientSocket.sendto(str(RTT).encode(),("127.0.0.1", 12000))
while i<count:
message="["+str(seqnum)+"]"
#여기~~~~~~~~~~1
clientSocket.sendto(message.encode(),("127.0.0.1", 12000))
ACK, serverAddress = clientSocket.recvfrom(2048)
#여기~~~~~~~~~~2
seqnum+=1
i+=1
그니까 여기~~~~~1에서 타이머를 발동시켜서
여기~~~~~~2에서 타이머를 끄는데
ACK, serverAddress = clientSocket.recvfrom(2048) 이 부분에서 대기상태가 지속되서
타이머가 5초 넘어가면 continue하고 싶은데 어케해야할까요..
파이썬입니다.
별짓 다하고 있고 밑에 분들이 알려주신 방법 찾아가면서 하는데 자꾸 에러나서 ㅠㅠ한번더 올립니다.
작은성의지만 기프티콘이라도 드릴게요
혹시 몰라서 리시버 부분도 올릴게요..
#stop and wiat 리시버
from socket import *
import random
import time
import threading
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('127.0.0.1', 12000))
loss=float(input("loss 확률:(0~1사이 값)"))
print ("리시버 준비 완료")
ACK="1"
RTT, clientAddress = serverSocket.recvfrom(2048)
RTT=float(RTT.decode())
while True:
message, clientAddress = serverSocket.recvfrom(2048)
if random.uniform(0,1)<loss:#data loss
continue
else:#data loss 없음
print(message.decode())#도착
if random.uniform(0,1)<loss:#ack 전송 오류
continue
else:
serverSocket.sendto(ACK.encode(),clientAddress)#ACK전송
해당 댓글은 삭제되었습니다.
알겠다 그만할게
https://stackoverflow.com/questions/37650716/python-fixed-wait-time-for-receiving-socket-data
이거 참고해라
고맙다 정말
고맙다 정말