Dne 21.2.2012 23:34, David Rohleder napsal(a):
azu je dle specifikace 01h, což do 1byte myslím nenarvu.
^^^^ chybu máš tady. 01h do 1byte narveš. Když jsem to upravil na
data = struct.pack("!IHHBB", 0, 0, 0, 1, 1)

tak mi ten baryk bez problémů odpověděl.
Děkuji. Podle specifikace modulu struct B odpovídá unsigned char. Takže pokud budu chtít posílat serveru inicializační zprávu, tak pošlu B, pokud mu později budu chtít poslat nějaká data, tak to musím narvat do stringu (takže do s), chápu to správně?

A nyní se asi objevil problém, o kterém mluvil pan Vejražka:
Ale ja jsem u toho b) nepsal o tom, ze by bylo neco spatne s tvym formatem UDP paketu 
nebo jeho obsahem. Troufnul bych se tvrdit, ze mas obycejny sitovy problem - tvuj domaci 
router blokuje "nezname" prichozi UDP pakety.
Protože pokud kód opravím, tak, jak mi bylo doporučeno, tak stále nedostávam od serveru žádnou odezvu. Dalo by se nějak nastavit v nastavení routeru, aby pouštel UDP pakety? nějaký forwarding nebo něco takového.

Jen pro jistotu, zde je kód, který pouštím:

#-*- 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))
        print "listening for responses..."
        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("!IHHBB", 0, 0, 0, 1, 1)

s.bind(("",0))
s.sendto(data, ("baryk.fit.cvut.cz", 4000))

Ještě jednou děkuji za Váš čas a Vaše rady,
Jakub

_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem