Python socket time

0

Witam

Mam pytanie, czy w tym kodzie

 
import sys
import socket
import errno
from time import sleep

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('xx.xx.xx.xx',xxxx))
s.setblocking(0)

while True:
    try:
        msg = s.recv(4096)
        sleep(2)
        k = "<something/>"
        s.sendto(k.encode("utf-8"),('xx.xx.xx.xx',xxxx))
        print(msg)

    except socket.error as e:
        err = e.args[0]
        if err == errno.EAGAIN or err == errno.EWOULDBLOCK:
            continue
        else:
            print(e)
            sys.exit(1)

wysyłanie wiadomości do serwera z linijki s.sendto(k.encode("utf-8"),('xx.xx.xx.xx',xxxx)) odbywa się co 2 sekundy czy w każdej chwili bez przerwy? Nie mam co do tego pewności bo na przykład wiadomości z msg = s.recv(4096) </code> przychodzą wszystkie z każdej chwili, mimo że <code>print wypisuje je 2 sekundy później.

0

Przeanalizuj kod w try:

  • Odbierz wiadomość
  • Odczekaj 2 sekundy
  • Wyslij wiadomosc o treści <something /> zakodowaną w utf-8 na adres ip xx.xx.xx.xx o porcie xx
  • Wypisz zmienną msg.
    Jeżeli chcesz, aby wysyłało Ci po wyświetleniu, to przed sleep musisz dać print, a nie po.
    Wiadomość wysyła się 2 sekundy po tym, jak została odebrana inna wiadomość, czyli:
    Komputer A -wysyła wiadomość -> Program odbiera -czeka 2 sekundy -> wysyła pod xx.xx.xx.xx wiadomość <somenthing /> -> wypisuje Tobie na ekranie wiadomość, którą otrzymał od komputera A
0

Czyli, że ta wiadomość do serwera jest wysyłana co 2 sekundy a nie w każdej chwili? Chodzi mi tylko o to, żeby nie wysyłać mnóstwa niepotrzebnych pakietów do serwera.

0

Wiadomość jest wysyłana 2 sekundy po tym, jak odbierze wiadomość od serwera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1