Dne 21.2.2012 22:02, Jirka Vejrazka napsal(a):
a) server neakceptuje UDP pakety, kde je identifikator spojeni a/nebo
sekvencni cislo nastavene na
Pokud jsem dobře pochopil zadání tak:

"Iniciátorem spojení je vždy klient.
Klient pošle první datagram s příznakem SYN a s identifikátorem spojení, sekvenčním číslem a číslem potvrzení nastaveným na nulu. Datová část musí obsahovat právě 1 byte s kódem příkazu:"
b) mas sitovy problem s odpovedi na UDP paket (viz muj predchozi mail).

Kód příkazu je dle specifikace 01h, což do 1byte myslím nenarvu. Ale pokud se podívám do referenční ukázky, tak oni tam při inicializiaci spojení posílají jako data "01" a ani když takto upravím struct.pack, tak od serveru nedostávám žádnou odpověd. Podle specifikace v zadání bych právě neměl dostat myslím žádnou odpověď, pokud přesně nestrefím první volání (přece jenom je to robotovi upadla anténa a musel se reebotovat bez nejakých komponent :-))

Fantastické! Co to máte za učitele? To je nádhera. Učí stejně dobře jak
píše zadání?
Jedná se o předmět Počítačové sítě a dělí se v podstatě na tři části
- přednášky - historie sítí, tenhle kabel vypadá takhle, stíněnej takhle
- semináře - konfigurace cisco routerů
- prosemináře - práce s adresami - výpočet masek, nat, ...
, přičemž každou část učí někdo jiný. Přednášející je uspávač hadů, ale ten kdo učí prosemináře se zdá, že tomu fakt rozumí a asi i píše i ty zadání. Takže ta programovací část předmětu je v podstatě takové samostudium. Nicméně je to, alespon pro mě, ta nejzábavnější část celého předmětu.
Tak pošli celý kód.
#-*- coding: utf-8 -*-
import socket
import re
import time
import struct
import threading

class Listener(threading.Thread):
    def __init__(self, ip='baryk.fit.cvut.cz', port=4000):
        threading.Thread.__init__(self)
        self.ip = ip
        self.port = port

    def run(self):
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM )
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.connect((self.ip, self.port))
        while 1:
            data, from_ip = sock.recvfrom(1)
            print "data", data

x = Listener()
x.start()

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM )
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
data = struct.pack("!IHHB256s", 0, 0, 0, 1, "01")
s.bind(("",0))
s.sendto(data, ("baryk.fit.cvut.cz", 4000))

Děkuji

Jakub







_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem