[python] socket + udp + vytváření paketů

Jakub Vojáček jakohv na seznam.cz
Úterý Únor 21 23:56:21 CET 2012


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

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20120221/649e0450/attachment.html>


Další informace o konferenci Python