#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하고 싶은데 어케해야할까,
논블락으로 셋팅 바꾸거나 스레드 만들어서 블락으로 작동하게 하면될듯
혹시 도와주실 수 있으실까요? 방향만 잡아주셔도 감사합니다..
소켓 타임아웃 지정하든지
그건 쓰면 안돼서요 ㅠㅠㅠ
timer에 socket close 넣어서 실행시키고 recv 부분 try로 감싸. 그럼 timeout되면 예외 처리 부분으로 넘어가니까 여기서부턴 알아서 처리하면됨
코드 간단히 알려주실 수 있나요 ㅠㅠ 죄송합니다.. timer에 socket close넣어서 실행시키라는게 무슨 말인지 모르곘어서 ㅠㅠ
제가 드릴건 없고 커피같은거라도 대접할게요 ㅠㅠ
ㄴ 타이머가 시간 지날때마다 어떤 로직이 실행되잖아? 거기서 저 clientsocket를 닫는 함수를 호출하거나 캔슬시켜버리면 recv blocking 됐던 부분 빠져나오면서 예외 발생해 그래서 예외처리부분에서 continue하면 될겨 파이썬 코드는 잘 몰라
타이머는 어케 구현해야할까요,,ㅠ
ㄴ근데 왜 app단에서 udp로 tcp를 구현하란건지 이해가 안되네 더 헷갈리기만 할거같은데
그르게 말입니다,,
ㄴ 파이썬 타이머 구글링하면 바로 나올겨 구글링 먼저 해
잘 안나와서 글썼습니다ㅠㅠ 다시 해볼게요