From hrabovecky.peter na gmail.com Thu Feb 2 18:03:28 2012 From: hrabovecky.peter na gmail.com (Peter Hrabovecky) Date: Thu, 2 Feb 2012 09:03:28 -0800 (PST) Subject: [python] python clanky Message-ID: <9708c9d7-9df7-40f5-86f3-d4127cfcdd10@hb4g2000vbb.googlegroups.com> Dobry den, sa vas chcem spytat, ci nemate nieco podobne riesene v pythone skript na generovanie konferencneho zbornika, ak mate k dispozicii uvodne strany okolo toho v tex/pdf, priecinok s pdf subormi s "vedeckymi" clankami a info o autoroch&nazvoch (napr. v rovnomennom txt subore ako dany pdf subor ).Pomocny skript by mal generovat obsah zbornika a index autorov s prislusnymi cislami stran clankov, samozrejme ocislovat strany zbornika a pokial by to bolo mozne, pridat aj krizove odkazy k cislam stran. Celkovy skript by mal zgenerovat cely zbornik naraz, teda ked mate k dizpozicii vsetko potrebne, spustite skript a ten vam vypluje hotovy zbornik. From zu1234 na seznam.cz Tue Feb 21 10:49:27 2012 From: zu1234 na seznam.cz (zu1234) Date: Tue, 21 Feb 2012 10:49:27 +0100 Subject: [python] =?iso-8859-2?q?=B9patn=E9_znaky_v_http=3A//diveintopytho?= =?iso-8859-2?q?n3=2Epy=2Ecz/?= Message-ID: <4F4368A7.2000104@seznam.cz> Nevíte proč stránky "http://diveintopython3.py.cz/" neumí písmeno 'ě'? Není to škoda? Přitom v ZIP archivu http://diveintopython3.py.cz/PonormeSeDoPythonu3-html.zip je to OK. ZU From prikryl na atlas.cz Tue Feb 21 14:32:34 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Tue, 21 Feb 2012 14:32:34 +0100 Subject: [python] =?utf-8?q?=C5=A1patn=C3=A9_znaky_v_http=3A//diveintopyth?= =?utf-8?q?on3=2Epy=2Ecz/?= In-Reply-To: <4F4368A7.2000104@seznam.cz> References: <4F4368A7.2000104@seznam.cz> Message-ID: <20120221143234.B676E068@atlas.cz> Zkoušel jsem to tam nahrát znovu. Asi je to tam uložené dobře, ale zprasí se to někde po cestě ven (i když to kopíruji přes WebDAV). P. ______________________________________________________________ > Od: "zu1234" > Komu: Konference PyCZ > Datum: 21.02.2012 10:50 > Předmět: [python] špatné znaky v http://diveintopython3.py.cz/ > >Nevíte proč stránky "http://diveintopython3.py.cz/" neumí písmeno 'ě'? > >Není to škoda? > >Přitom v ZIP archivu >http://diveintopython3.py.cz/PonormeSeDoPythonu3-html.zip >je to OK. > >ZU >_______________________________________________ >Python mailing list >Python na py.cz >http://www.py.cz/mailman/listinfo/python > From jakohv na seznam.cz Tue Feb 21 19:19:40 2012 From: jakohv na seznam.cz (=?UTF-8?B?SmFrdWIgVm9qw6HEjWVr?=) Date: Tue, 21 Feb 2012 19:19:40 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= Message-ID: <4F43E03C.1060708@seznam.cz> Dobrý den, mám za úkol naprogramovat UDP klienta. TCP/IP klienta jsem pomocí socketů naprogramoval bez problémů, ale na UDP jsem se zaseknul, protože mám přesně definováno, jak má vypadat paket, který posílám. Pokud bych neměl definován tvar paketu, tak bych použil s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.sendto(data, host, port)) , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. Formát je definován následovně: - 4B jsou rezervovány na identifikátor spojení - 2B jsou rezervovány na sekvenční číslo - 2B jsou rezervovány na číslo potvrzení - 1B je rezervován na příznak - 0-256B je rezervováno na data Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. Použil jsem tedy funkci struct.pack() data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") s.sendto(data, (host, port)) Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. Děkuji za každou radu Jakub ------------- další část --------------- HTML příloha byla odstraněna... URL: From jirka.vejrazka na gmail.com Tue Feb 21 19:33:45 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 21 Feb 2012 19:33:45 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <4F43E03C.1060708@seznam.cz> References: <4F43E03C.1060708@seznam.cz> Message-ID: Ahoj, Zkouse jsi kontrolovat, jestli tvuj odchozi paket odpovida zadani zpetnym sniffovanim na siti? Jde to bud pomoci Wiresharku (nebo cehokoli podobneho) a nebo v pythonu napriklad pomoci pypcap (http://code.google.com/p/pypcap/) nebo scapy. Tim se relativne jednoduse dozvis, jestli posilas spravna data. Ja casto potrebuju "postavit" paket uplne od zakladu (vubec nepouzivam socket) a pak casto pracuju s dpkt (http://code.google.com/p/dpkt/ ). Ale jde to i s dalsimi knihovnami, scapy je asi nejznamejsi. Snad to trochu pomuze :) Jirka From petr.messner na gmail.com Tue Feb 21 19:52:40 2012 From: petr.messner na gmail.com (Petr Messner) Date: Tue, 21 Feb 2012 19:52:40 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <4F43E03C.1060708@seznam.cz> References: <4F43E03C.1060708@seznam.cz> Message-ID: <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> Ahoj, 21. 2. 2012 v 19:19, Jakub Vojáček: ... > Pokud bych neměl definován tvar paketu, tak bych použil > > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) > s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > s.sendto(data, host, port)) > > , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. Nerozumím tomu, proč tento způsob nemůžeš použít. Jediné, co potřebuješ upravit, jsou data. Jak ten paket chceš potom odeslat, když ne takto? > > Formát je definován následovně: > - 4B jsou rezervovány na identifikátor spojení > - 2B jsou rezervovány na sekvenční číslo > - 2B jsou rezervovány na číslo potvrzení > - 1B je rezervován na příznak > - 0-256B je rezervováno na data > > Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. > > Použil jsem tedy funkci struct.pack() > > data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") > s.sendto(data, (host, port)) > Možná je chyba zde. Jako data posíláš "1", ale zabališ to jako "1" a za tím 255 znaků 0x00. To možná takto být nemá, záleží na zadání. Také pozor na endianitu. Vykřičníkem nastavuješ network/big-endian byte order, což by mělo být správně, ale je možné, že server je naprogramovaný špatně :) > Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. Zkus se třeba tcpdumpem nebo wiresharkem (zmiňovaném v dalším mailu) podívat, co přesně lítá po síti. Není možné nějak z toho serveru zjistit, co je špatně? Máš ten server nějak k dispozici? > > Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. > Modul struct je vhodný přesně na toto. PM > Děkuji za každou radu > > Jakub From jakohv na seznam.cz Tue Feb 21 20:55:53 2012 From: jakohv na seznam.cz (=?ISO-8859-2?Q?Jakub_Voj=E1=E8ek?=) Date: Tue, 21 Feb 2012 20:55:53 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> Message-ID: <4F43F6C9.3060908@seznam.cz> Dobrý den, v zadání je uvedeno, že indikátor spojení a sekvenční číslo je v reprezentaci network byte order (big endian) - znamená to tedy, že ten zbytek mám reprezentovat v little endian? data jsem zkoušel balit s paddingem i bez paddingu, ani jednou server neodpověděl, takže to asi nehraje roli (i když jako korektní řešení se mi zdá použít tu verz bez paddingu). Pomocí wiresharku jsem vysniffoval ten packet a má obsah f8 d1 11 a2 4f 2c 48 5d 60 85 3e d8 08 00 45 00 00 26 0c 13 00 00 80 11 f1 d4 c0 a8 00 69 93 20 e8 ad e7 a7 0f a0 00 12 ca 71 00 00 00 00 00 00 00 00 01 31 Ale ty data jsou nějak zakódována a popravdě se v nich moc nevyznám. Referenční řešení, které by fungovalo a jehož pakety bych mohl vysniffovat bohužel nemám. Přístup k serveru mám, ale pouze vzdálený (beží na 147.32.232.173:4000), ale protože tahle úloha je udělána tak, aby se programovala v C nebo v Jave, tak žádné testovací rozhraní, které by mi řeklo, co je špatně neexistuje (Python jsem si mohl zvolit, ovšem bylo mi řečeno, že musím počítat s "nulovou" podporou ze strany školy. Mám tedy pouze k dispozici refernční výstup programu, kde se klient připojuje k serveru: 232 00000000*SEND*127.0.0.1:4000 seq=0 ack=0 flags=01 data(1): 01 = zpráva zaslaná klientem 311 8CB60002*RECV*127.0.0.1:4000 seq=768 ack=0 flags=00 data(256): d0 93 9a 0e 35 da 0b 9e ... 08 0a e0 08 4c 33 37 c9 = odpověd zaslaná serverem (tu právě nedostávám) Bohužel celé to zadání je trochu zmatené. Je řečeno, že příznak má být první zprávy nastaven na SYN a je tam tabulka: číslo bitu 7 6 5 4 3 2 1 0 příznak - - - - - RST FIN SYN A nyní mi tedy není úplně jasné, jestli příznaku syn odpovída číslo 000000001 = 1 Vypadá to, že asi nakonec budu nucen použít některý z podporovaných jazyků. Děkuji za Vaše názory Jakub Dne 21.2.2012 19:52, Petr Messner napsal(a): > Ahoj, > > 21. 2. 2012 v 19:19, Jakub Vojáček: > ... >> Pokud bych neměl definován tvar paketu, tak bych použil >> >> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) >> s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) >> s.sendto(data, host, port)) >> >> , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. > Nerozumím tomu, proč tento způsob nemůžeš použít. Jediné, co potřebuješ upravit, jsou data. Jak ten paket chceš potom odeslat, když ne takto? > >> Formát je definován následovně: >> - 4B jsou rezervovány na identifikátor spojení >> - 2B jsou rezervovány na sekvenční číslo >> - 2B jsou rezervovány na číslo potvrzení >> - 1B je rezervován na příznak >> - 0-256B je rezervováno na data >> >> Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. >> >> Použil jsem tedy funkci struct.pack() >> >> data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") >> s.sendto(data, (host, port)) >> > Možná je chyba zde. Jako data posíláš "1", ale zabališ to jako "1" a za tím 255 znaků 0x00. To možná takto být nemá, záleží na zadání. > > Také pozor na endianitu. Vykřičníkem nastavuješ network/big-endian byte order, což by mělo být správně, ale je možné, že server je naprogramovaný špatně :) > >> Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. > Zkus se třeba tcpdumpem nebo wiresharkem (zmiňovaném v dalším mailu) podívat, co přesně lítá po síti. Není možné nějak z toho serveru zjistit, co je špatně? Máš ten server nějak k dispozici? > >> Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. >> > Modul struct je vhodný přesně na toto. > > PM > >> Děkuji za každou radu >> >> Jakub > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > ------------- další část --------------- HTML příloha byla odstraněna... URL: From davro na ics.muni.cz Tue Feb 21 21:12:00 2012 From: davro na ics.muni.cz (David Rohleder) Date: Tue, 21 Feb 2012 21:12:00 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F43F6C9.3060908@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> Message-ID: <1329855120.3239.0.camel@uruloki> Tak já nevím, ale opravdu to má být UDP? Protože všechno nasvědčuje spíš tomu, že je to TCP. V UDP žádné SYN, ACK a pod. nejsou. David Jakub Vojáček píše v Út 21. 02. 2012 v 20:55 +0100: > Dobrý den, > > v zadání je uvedeno, že indikátor spojení a sekvenční číslo je v > reprezentaci network byte order (big endian) - znamená to tedy, že ten > zbytek mám reprezentovat v little endian? > > data jsem zkoušel balit s paddingem i bez paddingu, ani jednou server > neodpověděl, takže to asi nehraje roli (i když jako korektní řešení se > mi zdá použít tu verz bez paddingu). Pomocí wiresharku jsem > vysniffoval ten packet a má obsah > > f8 d1 11 a2 4f 2c 48 5d 60 85 3e d8 08 00 45 00 > 00 26 0c 13 00 00 80 11 f1 d4 c0 a8 00 69 93 20 > e8 ad e7 a7 0f a0 00 12 ca 71 00 00 00 00 00 00 > 00 00 01 31 > > Ale ty data jsou nějak zakódována a popravdě se v nich moc nevyznám. > Referenční řešení, které by fungovalo a jehož pakety bych mohl > vysniffovat bohužel nemám. > > Přístup k serveru mám, ale pouze vzdálený (beží na > 147.32.232.173:4000), ale protože tahle úloha je udělána tak, aby se > programovala v C nebo v Jave, tak žádné testovací rozhraní, které by > mi řeklo, co je špatně neexistuje (Python jsem si mohl zvolit, ovšem > bylo mi řečeno, že musím počítat s "nulovou" podporou ze strany školy. > Mám tedy pouze k dispozici refernční výstup programu, kde se klient > připojuje k serveru: > > 232 00000000 SEND 127.0.0.1:4000 seq=0 ack=0 flags=01 data(1): 01 > = zpráva zaslaná klientem > 311 8CB60002 RECV 127.0.0.1:4000 seq=768 ack=0 flags=00 data(256): d0 > 93 9a 0e 35 da 0b 9e ? 08 0a e0 08 4c 33 37 c9 = odpověd zaslaná > serverem (tu právě nedostávám) > > Bohužel celé to zadání je trochu zmatené. Je řečeno, že příznak má být > první zprávy nastaven na SYN a je tam tabulka: > číslo > bitu > 7 > 6 > 5 > 4 > 3 > 2 > 1 > 0 > příznak > - > - > - > - > - > RST > FIN > SYN > A nyní mi tedy není úplně jasné, jestli příznaku syn odpovída číslo > 000000001 = 1 > > Vypadá to, že asi nakonec budu nucen použít některý z podporovaných > jazyků. > > Děkuji za Vaše názory > > Jakub > > > Dne 21.2.2012 19:52, Petr Messner napsal(a): > > Ahoj, > > > > 21. 2. 2012 v 19:19, Jakub Vojáček: > > ... > > > Pokud bych neměl definován tvar paketu, tak bych použil > > > > > > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) > > > s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > > > s.sendto(data, host, port)) > > > > > > , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. > > Nerozumím tomu, proč tento způsob nemůžeš použít. Jediné, co potřebuješ upravit, jsou data. Jak ten paket chceš potom odeslat, když ne takto? > > > > > Formát je definován následovně: > > > - 4B jsou rezervovány na identifikátor spojení > > > - 2B jsou rezervovány na sekvenční číslo > > > - 2B jsou rezervovány na číslo potvrzení > > > - 1B je rezervován na příznak > > > - 0-256B je rezervováno na data > > > > > > Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. > > > > > > Použil jsem tedy funkci struct.pack() > > > > > > data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") > > > s.sendto(data, (host, port)) > > > > > Možná je chyba zde. Jako data posíláš "1", ale zabališ to jako "1" a za tím 255 znaků 0x00. To možná takto být nemá, záleží na zadání. > > > > Také pozor na endianitu. Vykřičníkem nastavuješ network/big-endian byte order, což by mělo být správně, ale je možné, že server je naprogramovaný špatně :) > > > > > Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. > > Zkus se třeba tcpdumpem nebo wiresharkem (zmiňovaném v dalším mailu) podívat, co přesně lítá po síti. Není možné nějak z toho serveru zjistit, co je špatně? Máš ten server nějak k dispozici? > > > > > Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. > > > > > Modul struct je vhodný přesně na toto. > > > > PM > > > > > Děkuji za každou radu > > > > > > Jakub > > > > > > _______________________________________________ > > Python mailing list > > Python na py.cz > > http://www.py.cz/mailman/listinfo/python > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From jirka.vejrazka na gmail.com Tue Feb 21 21:17:37 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 21 Feb 2012 21:17:37 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <4F43F6C9.3060908@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> Message-ID: To trochu vypada, ze mas za ukol naprogramovat jednodussi verzi TCP protokolu, ty priznaky jsou prakticky stejne, viz http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure Z tech dat mi neni uplne jasne, jestli je to jenom obsah paketu, nebo i hlavicka. Muzes cele spojeni ulozit jako PCAP (viz Wireshark) a nahrat to nekam, kde si ti muzeme stahnout? Jirka -------------- next part -------------- An HTML attachment was scrubbed... URL: From jakohv na seznam.cz Tue Feb 21 21:17:01 2012 From: jakohv na seznam.cz (=?UTF-8?B?SmFrdWIgVm9qw6HEjWVr?=) Date: Tue, 21 Feb 2012 21:17:01 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <1329855120.3239.0.camel@uruloki> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <1329855120.3239.0.camel@uruloki> Message-ID: <4F43FBBD.5030304@seznam.cz> Určitě je to UDP, ty SYN apod. tam jsou jenom pro zvětšení obtížosti. Je to jenom int, který nabývá různé hodnoty. Jakub Dne 21.2.2012 21:12, David Rohleder napsal(a): > Tak já nevím, ale opravdu to má být UDP? Protože všechno nasvědčuje spíš > tomu, že je to TCP. V UDP žádné SYN, ACK a pod. nejsou. > > David > > Jakub Vojáček píše v Út 21. 02. 2012 v 20:55 +0100: >> Dobrý den, >> >> v zadání je uvedeno, že indikátor spojení a sekvenční číslo je v >> reprezentaci network byte order (big endian) - znamená to tedy, že ten >> zbytek mám reprezentovat v little endian? >> >> data jsem zkoušel balit s paddingem i bez paddingu, ani jednou server >> neodpověděl, takže to asi nehraje roli (i když jako korektní řešení se >> mi zdá použít tu verz bez paddingu). Pomocí wiresharku jsem >> vysniffoval ten packet a má obsah >> >> f8 d1 11 a2 4f 2c 48 5d 60 85 3e d8 08 00 45 00 >> 00 26 0c 13 00 00 80 11 f1 d4 c0 a8 00 69 93 20 >> e8 ad e7 a7 0f a0 00 12 ca 71 00 00 00 00 00 00 >> 00 00 01 31 >> >> Ale ty data jsou nějak zakódována a popravdě se v nich moc nevyznám. >> Referenční řešení, které by fungovalo a jehož pakety bych mohl >> vysniffovat bohužel nemám. >> >> Přístup k serveru mám, ale pouze vzdálený (beží na >> 147.32.232.173:4000), ale protože tahle úloha je udělána tak, aby se >> programovala v C nebo v Jave, tak žádné testovací rozhraní, které by >> mi řeklo, co je špatně neexistuje (Python jsem si mohl zvolit, ovšem >> bylo mi řečeno, že musím počítat s "nulovou" podporou ze strany školy. >> Mám tedy pouze k dispozici refernční výstup programu, kde se klient >> připojuje k serveru: >> >> 232 00000000 SEND 127.0.0.1:4000 seq=0 ack=0 flags=01 data(1): 01 >> = zpráva zaslaná klientem >> 311 8CB60002 RECV 127.0.0.1:4000 seq=768 ack=0 flags=00 data(256): d0 >> 93 9a 0e 35 da 0b 9e ? 08 0a e0 08 4c 33 37 c9 = odpověd zaslaná >> serverem (tu právě nedostávám) >> >> Bohužel celé to zadání je trochu zmatené. Je řečeno, že příznak má být >> první zprávy nastaven na SYN a je tam tabulka: >> číslo >> bitu >> 7 >> 6 >> 5 >> 4 >> 3 >> 2 >> 1 >> 0 >> příznak >> - >> - >> - >> - >> - >> RST >> FIN >> SYN >> A nyní mi tedy není úplně jasné, jestli příznaku syn odpovída číslo >> 000000001 = 1 >> >> Vypadá to, že asi nakonec budu nucen použít některý z podporovaných >> jazyků. >> >> Děkuji za Vaše názory >> >> Jakub >> >> >> Dne 21.2.2012 19:52, Petr Messner napsal(a): >>> Ahoj, >>> >>> 21. 2. 2012 v 19:19, Jakub Vojáček: >>> ... >>>> Pokud bych neměl definován tvar paketu, tak bych použil >>>> >>>> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) >>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) >>>> s.sendto(data, host, port)) >>>> >>>> , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. >>> Nerozumím tomu, proč tento způsob nemůžeš použít. Jediné, co potřebuješ upravit, jsou data. Jak ten paket chceš potom odeslat, když ne takto? >>> >>>> Formát je definován následovně: >>>> - 4B jsou rezervovány na identifikátor spojení >>>> - 2B jsou rezervovány na sekvenční číslo >>>> - 2B jsou rezervovány na číslo potvrzení >>>> - 1B je rezervován na příznak >>>> - 0-256B je rezervováno na data >>>> >>>> Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. >>>> >>>> Použil jsem tedy funkci struct.pack() >>>> >>>> data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") >>>> s.sendto(data, (host, port)) >>>> >>> Možná je chyba zde. Jako data posíláš "1", ale zabališ to jako "1" a za tím 255 znaků 0x00. To možná takto být nemá, záleží na zadání. >>> >>> Také pozor na endianitu. Vykřičníkem nastavuješ network/big-endian byte order, což by mělo být správně, ale je možné, že server je naprogramovaný špatně :) >>> >>>> Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. >>> Zkus se třeba tcpdumpem nebo wiresharkem (zmiňovaném v dalším mailu) podívat, co přesně lítá po síti. Není možné nějak z toho serveru zjistit, co je špatně? Máš ten server nějak k dispozici? >>> >>>> Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. >>>> >>> Modul struct je vhodný přesně na toto. >>> >>> PM >>> >>>> Děkuji za každou radu >>>> >>>> Jakub >>> >>> _______________________________________________ >>> Python mailing list >>> Python na py.cz >>> http://www.py.cz/mailman/listinfo/python >>> >> _______________________________________________ >> Python mailing list >> Python na py.cz >> http://www.py.cz/mailman/listinfo/python > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python ------------- další část --------------- HTML příloha byla odstraněna... URL: From davro na ics.muni.cz Tue Feb 21 21:19:20 2012 From: davro na ics.muni.cz (David Rohleder) Date: Tue, 21 Feb 2012 21:19:20 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F43F6C9.3060908@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> Message-ID: <1329855560.3239.1.camel@uruloki> btw. nevím, jak moc je ten kód úplný, ale chybí tam s.bind(("",0)) Jakub Vojáček píše v Út 21. 02. 2012 v 20:55 +0100: > Dobrý den, > > v zadání je uvedeno, že indikátor spojení a sekvenční číslo je v > reprezentaci network byte order (big endian) - znamená to tedy, že ten > zbytek mám reprezentovat v little endian? > > data jsem zkoušel balit s paddingem i bez paddingu, ani jednou server > neodpověděl, takže to asi nehraje roli (i když jako korektní řešení se > mi zdá použít tu verz bez paddingu). Pomocí wiresharku jsem > vysniffoval ten packet a má obsah > > f8 d1 11 a2 4f 2c 48 5d 60 85 3e d8 08 00 45 00 > 00 26 0c 13 00 00 80 11 f1 d4 c0 a8 00 69 93 20 > e8 ad e7 a7 0f a0 00 12 ca 71 00 00 00 00 00 00 > 00 00 01 31 > > Ale ty data jsou nějak zakódována a popravdě se v nich moc nevyznám. > Referenční řešení, které by fungovalo a jehož pakety bych mohl > vysniffovat bohužel nemám. > > Přístup k serveru mám, ale pouze vzdálený (beží na > 147.32.232.173:4000), ale protože tahle úloha je udělána tak, aby se > programovala v C nebo v Jave, tak žádné testovací rozhraní, které by > mi řeklo, co je špatně neexistuje (Python jsem si mohl zvolit, ovšem > bylo mi řečeno, že musím počítat s "nulovou" podporou ze strany školy. > Mám tedy pouze k dispozici refernční výstup programu, kde se klient > připojuje k serveru: > > 232 00000000 SEND 127.0.0.1:4000 seq=0 ack=0 flags=01 data(1): 01 > = zpráva zaslaná klientem > 311 8CB60002 RECV 127.0.0.1:4000 seq=768 ack=0 flags=00 data(256): d0 > 93 9a 0e 35 da 0b 9e ? 08 0a e0 08 4c 33 37 c9 = odpověd zaslaná > serverem (tu právě nedostávám) > > Bohužel celé to zadání je trochu zmatené. Je řečeno, že příznak má být > první zprávy nastaven na SYN a je tam tabulka: > číslo > bitu > 7 > 6 > 5 > 4 > 3 > 2 > 1 > 0 > příznak > - > - > - > - > - > RST > FIN > SYN > A nyní mi tedy není úplně jasné, jestli příznaku syn odpovída číslo > 000000001 = 1 > > Vypadá to, že asi nakonec budu nucen použít některý z podporovaných > jazyků. > > Děkuji za Vaše názory > > Jakub > > > Dne 21.2.2012 19:52, Petr Messner napsal(a): > > Ahoj, > > > > 21. 2. 2012 v 19:19, Jakub Vojáček: > > ... > > > Pokud bych neměl definován tvar paketu, tak bych použil > > > > > > s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) > > > s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) > > > s.sendto(data, host, port)) > > > > > > , ale jelikož je přesně definována velikost a struktura paketu, tak tento způsob nemohu použít. > > Nerozumím tomu, proč tento způsob nemůžeš použít. Jediné, co potřebuješ upravit, jsou data. Jak ten paket chceš potom odeslat, když ne takto? > > > > > Formát je definován následovně: > > > - 4B jsou rezervovány na identifikátor spojení > > > - 2B jsou rezervovány na sekvenční číslo > > > - 2B jsou rezervovány na číslo potvrzení > > > - 1B je rezervován na příznak > > > - 0-256B je rezervováno na data > > > > > > Abych řekl pravdu, vůbec jsem nevěděl, jak začít. Nakonec jsem se pokusil použít modul struct a přenáše data zabalena pomoci toho modulu. > > > > > > Použil jsem tedy funkci struct.pack() > > > > > > data = struct.pack("!IHHB256s", 0, 0, 0, 1, "1") > > > s.sendto(data, (host, port)) > > > > > Možná je chyba zde. Jako data posíláš "1", ale zabališ to jako "1" a za tím 255 znaků 0x00. To možná takto být nemá, záleží na zadání. > > > > Také pozor na endianitu. Vykřičníkem nastavuješ network/big-endian byte order, což by mělo být správně, ale je možné, že server je naprogramovaný špatně :) > > > > > Jenomže tento způsob také nefunguje, protože pokud pošlu takto zabalenou zprávu referenčnímu serveru, tak nedostanu odpověď - tudíž server nepřečetl paket správně. > > Zkus se třeba tcpdumpem nebo wiresharkem (zmiňovaném v dalším mailu) podívat, co přesně lítá po síti. Není možné nějak z toho serveru zjistit, co je špatně? Máš ten server nějak k dispozici? > > > > > Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je např. použití modulu struct vhodné. > > > > > Modul struct je vhodný přesně na toto. > > > > PM > > > > > Děkuji za každou radu > > > > > > Jakub > > > > > > _______________________________________________ > > Python mailing list > > Python na py.cz > > http://www.py.cz/mailman/listinfo/python > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From jirka.vejrazka na gmail.com Tue Feb 21 21:19:19 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 21 Feb 2012 21:19:19 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> Message-ID: A mimochodem, pokud mas zdrojovou adresu odchoziho paketu 127.0.0.1, tak ti zadny server neodpovi. Musis to poslat z rozhrani, ktere ma "verejnou" IP adresu, na kterou muze ten tvuj server zpatky odpovedet. Jirka From jakohv na seznam.cz Tue Feb 21 21:36:35 2012 From: jakohv na seznam.cz (=?UTF-8?B?SmFrdWIgVm9qw6HEjWVr?=) Date: Tue, 21 Feb 2012 21:36:35 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> Message-ID: <4F440053.9000106@seznam.cz> TCP/IP byl minulý úkol, nyní je to, pokud to dobře chápu doopravdy UDP, viz. zadání: http://maths.cz/ukol.pdf Spojení z wireshark je zde: http://maths.cz/test.pcap (jedná se o to spojení, které má destination 147.32.232.173). > A mimochodem, pokud mas zdrojovou adresu odchoziho paketu 127.0.0.1, > tak ti zadny server neodpovi. Musis to poslat z rozhrani, ktere ma > "verejnou" IP adresu, na kterou muze ten tvuj server zpatky odpovedet. V adresách se moc nevyznám, ale když jsem testoval tcp/ip klienta obdobným způsobem testoval, tak server normálně odpovídal. A pokud se kouknu na odchozí adresu paketů, tak to není localhost ale 192.168.0.105 > btw. nevím, jak moc je ten kód úplný, ale chybí tam > s.bind(("",0)) To v kódu mám, stejně to nefunguje. Děkuji za Váš čas, Jakub Dne 21.2.2012 21:17, Jirka Vejrazka napsal(a): > To trochu vypada, ze mas za ukol naprogramovat jednodussi verzi TCP > protokolu, ty priznaky jsou prakticky stejne, viz > http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure > > Z tech dat mi neni uplne jasne, jestli je to jenom obsah paketu, nebo > i hlavicka. Muzes cele spojeni ulozit jako PCAP (viz Wireshark) a > nahrat to nekam, kde si ti muzeme stahnout? > > Jirka > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python ------------- další část --------------- HTML příloha byla odstraněna... URL: From jirka.vejrazka na gmail.com Tue Feb 21 21:44:50 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 21 Feb 2012 21:44:50 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <4F440053.9000106@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> Message-ID: > V adresách se moc nevyznám, ale když jsem testoval tcp/ip klienta obdobným > způsobem testoval, tak server normálně odpovídal. A pokud se kouknu na > odchozí adresu paketů, tak to není localhost ale 192.168.0.105 Aha, takze primarni problem bude zrejme v routovani a firewallu. Predpokladam, ze se se pokousit pripojit na ten skolni server, ze? Narozdil od TCP je UDP "bezestavove" a bezne domaci routery si nepamatuji ke kteremu odchozimu paketu patri ten prichozi a tak ho zablokuji. Pokud si tu situaci predstavuju spravne, tak ten skolni server (nejak) odpovida, ale nedostane se na tvuj stroj na domaci siti. Jeste se podivam na ten PCAP, jestli tam neni neco jineho. Jirka From jirka.vejrazka na gmail.com Tue Feb 21 22:02:18 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 21 Feb 2012 22:02:18 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> Message-ID: Tak podle PCAPu to vazne vypada, ze ti server nedokaze odpovedet (neni zadna odezva). Tvuj UDP paket vypada docela dobre. Krome priznaku SYN a prvniho z 256 znaku je ale uplne prazdny, coz odpovida tomu co davas do struct() Kdyz vynecham UDP hlavicku, tak vlastni data (tj. "payload") v paketu ktery posilas vypada takhle: 00 00 00 00 00 00 00 00 01 31 00 00 00 00 00 00 Coz je presne ten tvuj struct() - nejdriv ctyri bajty s hodnotou nula, pak dva bajty s hodnotou nula, pak dalsi dva bajty s hodnotou nula, pak je 01 coz je tvuj SYN priznak (a je spravne) a pak uz jenom 31 coz je hexadecimalni kod pro znak "1". Rekl bych, ze kod mas spravne, ale mas jeden ze dvou problemu: a) server neakceptuje UDP pakety, kde je identifikator spojeni a/nebo sekvencni cislo nastavene na 0 b) mas sitovy problem s odpovedi na UDP paket (viz muj predchozi mail). Python kod mas celkem dobre, C ani Java ti v nicem nepomuze. Jirka From davro na ics.muni.cz Tue Feb 21 22:05:25 2012 From: davro na ics.muni.cz (David Rohleder) Date: Tue, 21 Feb 2012 22:05:25 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F440053.9000106@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> Message-ID: <1329858325.3239.3.camel@uruloki> Jakub Vojáček píše v Út 21. 02. 2012 v 21:36 +0100: > TCP/IP byl minulý úkol, nyní je to, pokud to dobře chápu doopravdy > UDP, viz. zadání: http://maths.cz/ukol.pdf > Fantastické! Co to máte za učitele? To je nádhera. Učí stejně dobře jak píše zadání? > > btw. nevím, jak moc je ten kód úplný, ale chybí tam > > s.bind(("",0)) > To v kódu mám, stejně to nefunguje. > Tak pošli celý kód. From jakohv na seznam.cz Tue Feb 21 23:17:37 2012 From: jakohv na seznam.cz (=?ISO-8859-2?Q?Jakub_Voj=E1=E8ek?=) Date: Tue, 21 Feb 2012 23:17:37 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> Message-ID: <4F441801.2030002@seznam.cz> 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 ------------- další část --------------- HTML příloha byla odstraněna... URL: From jirka.vejrazka na gmail.com Tue Feb 21 23:32:15 2012 From: jirka.vejrazka na gmail.com (jirka.vejrazka na gmail.com) Date: Tue, 21 Feb 2012 22:32:15 +0000 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F441801.2030002@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> Message-ID: <1796709473-1329863534-cardhu_decombobulator_blackberry.rim.net-759090533-@b2.c3.bise7.blackberry> 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. Jirka -----Original Message----- From: Jakub Vojáček Sender: python-bounces na py.czDate: Tue, 21 Feb 2012 23:17:37 To: Konference PyCZ Reply-To: Konference PyCZ Subject: Re: [python] socket + udp + vytváření paketů _______________________________________________ Python mailing list Python na py.cz http://www.py.cz/mailman/listinfo/python From davro na ics.muni.cz Tue Feb 21 23:34:20 2012 From: davro na ics.muni.cz (David Rohleder) Date: Tue, 21 Feb 2012 23:34:20 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F441801.2030002@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> Message-ID: <1329863660.3239.5.camel@uruloki> Jakub Vojáček píše v Út 21. 02. 2012 v 23:17 +0100: > 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. ^^^^ 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. From jakohv na seznam.cz Tue Feb 21 23:56:21 2012 From: jakohv na seznam.cz (=?ISO-8859-2?Q?Jakub_Voj=E1=E8ek?=) Date: Tue, 21 Feb 2012 23:56:21 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <1329863660.3239.5.camel@uruloki> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> Message-ID: <4F442115.6090602@seznam.cz> 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: From davro na ics.muni.cz Wed Feb 22 00:30:38 2012 From: davro na ics.muni.cz (David Rohleder) Date: Wed, 22 Feb 2012 00:30:38 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <4F442115.6090602@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> Message-ID: <1329867038.3239.16.camel@uruloki> Jakub Vojáček píše v Út 21. 02. 2012 v 23:56 +0100: > 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ě? Ne. Protože "1" je ASCII hodnota 49. Samozřejmě by to šlo, pokud bys dokázal do řetězce dát ta binární data. Tj. třeba jako data = data + chr(1) Problém je spíš v tom struct, protože nepřijímá parametr typu pole, takže nejde napsat data = struct.pack("B"*10 , [ 1, 1, 1, 10...] ) V tomto případě bych použil modul array následovně: import array data = array('B' , [ seznam s hodnotami ] ) s.sendto(data.tostring(), (host,port)) > > 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. Ten problém může být: a) ve firewallu na routeru b) v neschopnosti routeru vytvořit connection tracking tabulku, aby věděl, kam poslat odpověď od serveru (méně pravděpodobné) > Nejjednodušší to bude patrně pustit na nějakém školním počítači, protože tam nebude NAT ani firewall. D. From jakohv na seznam.cz Wed Feb 22 09:19:57 2012 From: jakohv na seznam.cz (=?ISO-8859-2?Q?Jakub_Voj=E1=E8ek?=) Date: Wed, 22 Feb 2012 09:19:57 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <1329867038.3239.16.camel@uruloki> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> <1329867038.3239.16.camel@uruloki> Message-ID: <4F44A52D.3040200@seznam.cz> Dobrý den, nakonec uvolnili binárku serveru, takže si to můžu pustit doma na localhostu a tam už mi žádný router pakety nežere, takže už mi server odpovídá. Děkuji všem za pomoc, snad už se mi to nějak podaří vyřešit. Jakub ------------- další část --------------- HTML příloha byla odstraněna... URL: From davro na ics.muni.cz Wed Feb 22 08:48:54 2012 From: davro na ics.muni.cz (David Rohleder) Date: Wed, 22 Feb 2012 08:48:54 +0100 Subject: [python] =?utf-8?b?c29ja2V0ICsgdWRwICsgdnl0dsOhxZllbsOtIHBha2V0?= =?utf-8?b?xa8=?= In-Reply-To: <1329867038.3239.16.camel@uruloki> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> <1329867038.3239.16.camel@uruloki> Message-ID: <1329896934.6097.59.camel@amandil.ics.muni.cz> David Rohleder píše v St 22. 02. 2012 v 00:30 +0100: > Jakub Vojáček píše v Út 21. 02. 2012 v 23:56 +0100: > > 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ě? > > Ne. Protože "1" je ASCII hodnota 49. Samozřejmě by to šlo, pokud bys > dokázal do řetězce dát ta binární data. Tj. třeba jako data = data + > chr(1) > > Problém je spíš v tom struct, protože nepřijímá parametr typu pole, > takže nejde napsat data = struct.pack("B"*10 , [ 1, 1, 1, 10...] ) > > V tomto případě bych použil modul array následovně: > > import array > > data = array('B' , [ seznam s hodnotami ] ) > > s.sendto(data.tostring(), (host,port)) > Když se na to teď trošku dívám, tak se to bude muset udělat spíš tak, že se spojí ten struct s array asi následovně: strukturovana_data = struct.pack(...) nestrukturovana_data = array('B', list).tostring() data_k_odeslani = strukturovana_data + nestrukturovana_data s.sendto(data_k_odeslani,...) To proto, abychom mohli použít ty funkce na převod do network byte order, ikdyž k tomu se určitě dají použít i funkce typu hton(). David From prikryl na atlas.cz Wed Feb 22 14:02:11 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 22 Feb 2012 14:02:11 +0100 Subject: [python] =?utf-8?q?diveintopython3=2Epy=2Ecz_--_zah=C3=A1jeny_opr?= =?utf-8?q?avy_a_=C3=BApravy?= In-Reply-To: <4F4368A7.2000104@seznam.cz> References: <4F4368A7.2000104@seznam.cz> Message-ID: <20120222140211.AC773BA5@atlas.cz> Zdravím všechny, > "zu1234" napsal(a) >Nevíte proč stránky "http://diveintopython3.py.cz/" neumí písmeno 'ě'? Zatím se to nevyřešilo, ale v příslušném zip http://diveintopython3.py.cz/PonormeSeDoPythonu3-html.zip najdete verzi, kde jsem začal s "oprašováním": 2012-02-21 U HTML souborů byl odstraněn BOM (tj. teď je UTF-8 bez BOM) 2012-02-21 Odkazy na originál změněny na nové 2012-02-22 about.html naformátováno podle originálu 2012-02-22 Pojem alfametika nebo alfametická hádanka změněn na algebrogram 2012-02-22 advanced-iterators.html - upraveno formátování podle originálu 2012-02-22 blank.html - formátování upraveno podle originálu Pokud někdo narazíte na chyby, špatné zalomení, cokoliv, dejte mi vědět. Budu to postupně zapracovávat. Mějte se fajn, Petr Přikryl From zu1234 na seznam.cz Wed Feb 22 14:23:50 2012 From: zu1234 na seznam.cz (zu1234) Date: Wed, 22 Feb 2012 14:23:50 +0100 Subject: [python] =?iso-8859-2?q?diveintopython3=2Epy=2Ecz_--_zah=E1jeny_o?= =?iso-8859-2?q?pravy_a_=FApravy?= In-Reply-To: <20120222140211.AC773BA5@atlas.cz> References: <4F4368A7.2000104@seznam.cz> <20120222140211.AC773BA5@atlas.cz> Message-ID: <4F44EC66.6050707@seznam.cz> Díky za tu práci! ZU Dne 22.2.2012 14:02, Petr Přikryl napsal(a): > > Zdravím všechny, > >> "zu1234" napsal(a) >> Nevíte proč stránky "http://diveintopython3.py.cz/" neumí písmeno 'ě'? > > Zatím se to nevyřešilo, ale v příslušném zip > http://diveintopython3.py.cz/PonormeSeDoPythonu3-html.zip > najdete verzi, kde jsem začal s "oprašováním": > > 2012-02-21 U HTML souborů byl odstraněn BOM (tj. teď je UTF-8 bez BOM) > 2012-02-21 Odkazy na originál změněny na nové > 2012-02-22 about.html naformátováno podle originálu > 2012-02-22 Pojem alfametika nebo alfametická hádanka změněn na algebrogram > 2012-02-22 advanced-iterators.html - upraveno formátování podle originálu > 2012-02-22 blank.html - formátování upraveno podle originálu > > Pokud někdo narazíte na chyby, špatné zalomení, cokoliv, dejte mi vědět. > Budu to postupně zapracovávat. > > Mějte se fajn, > Petr Přikryl From prikryl na atlas.cz Wed Feb 22 23:13:45 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 22 Feb 2012 23:13:45 +0100 Subject: [python] =?utf-8?q?diveintopython3=2Epy=2Ecz_--_zah=C3=A1jeny_opr?= =?utf-8?q?avy_a_=C3=BApravy?= In-Reply-To: <4F44EC66.6050707@seznam.cz> References: <4F4368A7.2000104@seznam.cz>, <20120222140211.AC773BA5@atlas.cz> <4F44EC66.6050707@seznam.cz> Message-ID: <20120222231345.5FEEC02E@atlas.cz> Díky ViNiLovi už by to mělo zase fungovat. P. From zu1234 na seznam.cz Thu Feb 23 09:06:16 2012 From: zu1234 na seznam.cz (zu1234) Date: Thu, 23 Feb 2012 09:06:16 +0100 Subject: [python] =?iso-8859-2?q?diveintopython3=2Epy=2Ecz_--_zah=E1jeny_o?= =?iso-8859-2?q?pravy_a_=FApravy?= In-Reply-To: <20120222231345.5FEEC02E@atlas.cz> References: <4F4368A7.2000104@seznam.cz>, <20120222140211.AC773BA5@atlas.cz> <4F44EC66.6050707@seznam.cz> <20120222231345.5FEEC02E@atlas.cz> Message-ID: <4F45F378.6070405@seznam.cz> Ano, paráda!!! > Díky ViNiLovi už by to mělo zase fungovat. From kiclus6 na gmail.com Mon Feb 27 20:42:54 2012 From: kiclus6 na gmail.com (=?ISO-8859-2?B?VG9t4bkgS+FjZWw=?=) Date: Mon, 27 Feb 2012 11:42:54 -0800 (PST) Subject: [python] =?iso-8859-2?q?Probl=E9m_s_=E8esk=FDmi__znaky_v_cgi_scri?= =?iso-8859-2?q?ptu?= Message-ID: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> Zdravím, dostal jsem problém při zobrazování českých znaků v cgi scriptu, hledal jsem na internetu nějaká řešení co s tím, ale nějak jsem nepochodil. Například v takovémto jednoduchém kódě: #!/usr/bin/env python3 #print ('') print ('Content-type:text/html; charset="utf-8"\r\n\r\n') print ('') print ('') print ('Vyhledava') print ('') print ('') n="ž".encode("utf-8") print(n) print(n.decode()) print ('

This is my CGI program

') print ('') print ('') Při otevření v prohlížeči se nezobrazí vůbec nic, protože to selže na znaku ž, bez řádku s vypsáním znaku ž se zobrazí: this is my cgi program. Myslel jsem, že python3 funguje na utf-8 a neměl by mít s čekými znaky problém, stejně tak prohlížeč je nastaven na utf-8. Děkuji za radu, nějak nevím co s tím. S přáním pěkného dne T. Kácel From petr.messner na gmail.com Mon Feb 27 21:13:30 2012 From: petr.messner na gmail.com (Petr Messner) Date: Mon, 27 Feb 2012 21:13:30 +0100 Subject: [python] =?utf-8?q?Probl=C3=A9m_s_=C4=8Desk=C3=BDmi_znaky_v_cgi_s?= =?utf-8?q?criptu?= In-Reply-To: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> References: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> Message-ID: Zkusil bych něco takového: http://stackoverflow.com/a/4374457/196206 Tedy sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) Zřejmě pak nebude nutné používat str.encode(). Ad "Myslel jsem, že python3 funguje na utf-8" - Python 3 pracuje s unicode, to, jaké kódování používá pro komunikaci s okolím, si domýšlí z proměnných prostředí, případně z nějakého nastavení. PM 2012/2/27 Tomáš Kácel : > Zdravím, > dostal jsem problém při zobrazování českých znaků v cgi scriptu, > hledal jsem na internetu nějaká řešení co s tím, ale nějak jsem > nepochodil. Například v takovémto jednoduchém kódě: > > #!/usr/bin/env python3 > > #print (' EN">') > print ('Content-type:text/html; charset="utf-8"\r\n\r\n') > print ('') > print ('') > print ('Vyhledava') > print ('') > print ('') > n="ž".encode("utf-8") > print(n) > print(n.decode()) > print ('

This is my CGI program

') > print ('') > print ('') > > Při otevření v prohlížeči se nezobrazí vůbec nic, protože to selže na > znaku ž, bez řádku s vypsáním znaku ž se zobrazí: this is my cgi > program. Myslel jsem, že python3 funguje na utf-8 a neměl by mít s > čekými znaky problém, stejně tak prohlížeč je nastaven na utf-8. > Děkuji za radu, nějak nevím co s tím. > S přáním pěkného dne > T. Kácel > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From hynek.fabian na firma.seznam.cz Tue Feb 28 12:42:33 2012 From: hynek.fabian na firma.seznam.cz (Hynek Fabian) Date: Tue, 28 Feb 2012 12:42:33 +0100 Subject: [python] =?iso-8859-2?q?Probl=E9m_s_=E8esk=FDmi__znaky_v_cgi_scri?= =?iso-8859-2?q?ptu?= In-Reply-To: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> References: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> Message-ID: <4F4CBDA9.6050304@firma.seznam.cz> Když vidím v kódu řetězcový literál, začal bych tím jestli má zdroják stejné kódování jaké očekává interpret. Mrkni na to v hexeditu nebo použij zápis codepointu: n='\u017e'.encode("utf8") On 02/27/12 20:42, Tomáš Kácel wrote: > Zdravím, > dostal jsem problém při zobrazování českých znaků v cgi scriptu, > hledal jsem na internetu nějaká řešení co s tím, ale nějak jsem > nepochodil. Například v takovémto jednoduchém kódě: > > #!/usr/bin/env python3 > > #print (' EN">') > print ('Content-type:text/html; charset="utf-8"\r\n\r\n') > print ('') > print ('') > print ('Vyhledava') > print ('') > print ('') > n="ž".encode("utf-8") > print(n) > print(n.decode()) > print ('

This is my CGI program

') > print ('') > print ('') > > Při otevření v prohlížeči se nezobrazí vůbec nic, protože to selže na > znaku ž, bez řádku s vypsáním znaku ž se zobrazí: this is my cgi > program. Myslel jsem, že python3 funguje na utf-8 a neměl by mít s > čekými znaky problém, stejně tak prohlížeč je nastaven na utf-8. > Děkuji za radu, nějak nevím co s tím. > S přáním pěkného dne > T. Kácel From prikryl na atlas.cz Tue Feb 28 13:10:55 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Tue, 28 Feb 2012 13:10:55 +0100 Subject: [python] Dive Into Pyton 3 cesky -- opraveno, sbiram chyby... Message-ID: <20120228131055.58DF13B0@atlas.cz> Ahoj všichni, Na http://diveintopython3.py.cz/ najdete několik minut/hodin starou verzi překladu Dive Into Python 3. - Všechny HTML soubory byly přeformátovány podle originálu, takže by tím měly být opraveny chyby v zalamování příkladů. - Přibyla příloha E, ve které najdete seznam posledních změn a úprav. - Přeneseny byly všechny opravy a úpravy, které Mark Pilgrim provedl před "informační sebevraždou". - Byly změněny odkazy na originální webovou podobu. Vše je k dispozici v podobě Git archivu na https://pepr na github.com/pepr/diveintopython3cz.git Kromě vlastních HTML dokumentů tam najdete i pomocné skripty -- částečně převzaté od Marka Pilgrima, částečně upravené nebo vytvořené. Nahrubo je tam konfigurace pro generování alternativní PDF podoby, kterou si můžete stáhnout jako http://diveintopython3.py.cz/PonormeSeDoPythonu3pdf.zip Čtěte, hledejte chyby, posílejte náměty na další zpracování. Ale hlavně... ... mějte se fajn, Petr P.S. Pokud má někdo zkušenosti s automatizovaným generováním elektronické a "tištěné" podoby z HTML 5 (do PDF nebo do jiných formátů, přes TeX nebo jinak), ozvěte se mi. From jakohv na seznam.cz Tue Feb 28 13:29:43 2012 From: jakohv na seznam.cz (=?ISO-8859-2?Q?Jakub_Voj=E1=E8ek?=) Date: Tue, 28 Feb 2012 13:29:43 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <1329896934.6097.59.camel@amandil.ics.muni.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> <1329867038.3239.16.camel@uruloki> <1329896934.6097.59.camel@amandil.ics.muni.cz> Message-ID: <4F4CC8B7.4050700@seznam.cz> Zdravím, opět jsem narazil na problém při práci na tomto úkolu. Download dat ze serveru včetně ošetřených ztracených paket i již funguje, ale zatím jsem přijímání i odesílání paketů řešil v jenom threadu. Jenomže dle zadání je na začátku spojení poslat serveru SYN paket a server musí odpovědět také SYN paketem se číslem spojení. Ale server může simulovat ztrátu mého paketu a proto musí můj klient posílat SYN paket celkem 20x, než spojení definitivně uzavře. Udělal jsem tedy aplikaci dvouvláknovou - jedno vlákno přijímá zprávy ze serveru a druhé je posílá. #-*- coding: utf-8 -*- import socket import re import time import struct import threading import time class Server: def __init__(self, host = "", port = 4000): self.conn_id = False self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.s.bind(("",0)) self.receiver = Receiver(self.s, self.read) self.receiver.start() for x in range(20): if self.conn_id != False: break data = struct.pack("!IHHBB", 0, 0, 0, 1, 1) self.s.sendto(data, ("localhost", 4000)) time.sleep(0.1) if self.conn_id == False: print "SERVER NEODPOVEDEL NA SYN" print "nyní je třeba nějak donutit Receiver, aby se ukončil" #self.s.close() return def read(self, data): #parsuje data a přečte z nich conn_id a nastaví self.conn_id na nějaké číslo pass class Receiver(threading.Thread): def __init__(self, s, callback): threading.Thread.__init__(self) self.s = s self.callback = callback def run(self): while 1: data, from_ip = self.s.recvfrom(265) if not data: break self.callback(data) Problém je tedy v tom, že Reveiver čeká na nějaká data (self.s.recvfrom(265)), jenomže tyhle data teoreticky nemusejí přijít a po 20x odeslání SYN je třeba nějak z této naslouchací smyčky vyskočit a program ukončit. Napadlo mě volat self.s.close(), což vyvolá vyjímku, jenomže se mi to nezdá jako úplně čisté řešení. Snad jsem se vyjádřil srozumitelně. Děkuji za Vaše nápady, Jakub ------------- další část --------------- HTML příloha byla odstraněna... URL: From jirka.vejrazka na gmail.com Tue Feb 28 16:08:28 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 28 Feb 2012 16:08:28 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: <4F4CC8B7.4050700@seznam.cz> References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> <1329867038.3239.16.camel@uruloki> <1329896934.6097.59.camel@amandil.ics.muni.cz> <4F4CC8B7.4050700@seznam.cz> Message-ID: Lepsi nez thready je pouzit procesy (modul multiprocessing), ty je vyrazne jednodussi ukoncit. Pokud bys to chtel resit systemove, pak je dobre pouzit timeout (misto while 1: budes mit while time.time() < start_time + timeout: ), signaly (dostupne pouze na UNIX-like systemech) a nebo pouzit nejakou knihovnu, ktera resi udalosti. Twisted Python, libevent+pyevent (to pouzivam ja) nebo http://eventlet.net/ A ted si vyber ;-) Jirka From jirka.vejrazka na gmail.com Tue Feb 28 16:14:10 2012 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Tue, 28 Feb 2012 16:14:10 +0100 Subject: [python] =?iso-8859-2?q?socket_+_udp_+_vytv=E1=F8en=ED_paket=F9?= In-Reply-To: References: <4F43E03C.1060708@seznam.cz> <9DFB6F75-D82C-4FB0-989F-6052D68EEC43@gmail.com> <4F43F6C9.3060908@seznam.cz> <4F440053.9000106@seznam.cz> <4F441801.2030002@seznam.cz> <1329863660.3239.5.camel@uruloki> <4F442115.6090602@seznam.cz> <1329867038.3239.16.camel@uruloki> <1329896934.6097.59.camel@amandil.ics.muni.cz> <4F4CC8B7.4050700@seznam.cz> Message-ID: Ehm, ten timeout je ode mne v danem pripade samozrejme nesmysl, musim ty maily cist poradne :( 2012/2/28 Jirka Vejrazka : > Lepsi nez thready je pouzit procesy (modul multiprocessing), ty je > vyrazne jednodussi ukoncit. > > Pokud bys to chtel resit systemove, pak je dobre pouzit timeout (misto > while 1: budes mit while time.time() < start_time + timeout: ), > signaly  (dostupne pouze na UNIX-like systemech) a nebo pouzit nejakou > knihovnu, ktera resi udalosti. Twisted Python, libevent+pyevent (to > pouzivam ja) nebo http://eventlet.net/ > >  A ted si vyber ;-) > >    Jirka From prikryl na atlas.cz Tue Feb 28 22:26:29 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Tue, 28 Feb 2012 22:26:29 +0100 Subject: [python] =?utf-8?q?Probl=C3=A9m_s_=C4=8Desk=C3=BDmi__znaky_v_cgi_?= =?utf-8?q?scriptu?= In-Reply-To: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> References: <94f92442-4a91-4391-8138-64c566d0b7b2@w1g2000vbg.googlegroups.com> Message-ID: <20120228222629.3E58037B@atlas.cz> Tomáš Kácel napsal... >[...] Myslel jsem, že python3 funguje na utf-8 a neměl by mít s >čekými znaky problém, stejně tak prohlížeč je nastaven na utf-8. Python 3 pracuje s unicode řetězci. UTF-8 je jedno z možných kódování unicode řetězců, když je potřeba je za fyzicky zaznamenat a nepracovat s nimi jako s posloupnostmi znaků v abstraktním smyslu. To znamená, že před odeslání mimo vnitřní paměť pythonovského procesu musí dojít k převodu na posloupnost bajtů (například metodou .encode()). Funkce print() je ale napojená na výstupní stream (standardně sys.stdout), který rovněž používá nějaké kódování řetězců (v závislosti na OS a jeho konfiguraci). Funkce print() se ale sama snaží převést unicode řetězec do onoho (skrytého) výstupního kódování. Z těchto důvodů není ke generování výstupního HTML souboru vhodné používat funkci print(). Lepší je otevřít výstupní textový soubor f pro kódování UTF-8 a zapisovat do něj metodou f.write(s) Doporučuji si přečíst http://diveintopython3.py.cz/strings.html a http://diveintopython3.py.cz/files.html P. From zu1234 na seznam.cz Tue Feb 28 22:29:42 2012 From: zu1234 na seznam.cz (zu1234) Date: Tue, 28 Feb 2012 22:29:42 +0100 Subject: [python] Dive Into Pyton 3 cesky -- opraveno, sbiram chyby... In-Reply-To: <20120228131055.58DF13B0@atlas.cz> References: <20120228131055.58DF13B0@atlas.cz> Message-ID: <4F4D4746.2040109@seznam.cz> Při prohlížení HTML verze mi poněkud vadila velká výška řádků. Hlavně se tím (na mém (normálně) malém) monitoru znehodnocuje výborné synchronní označování řádků programu a odpovídajícího komentáře. Pořešil jsem to tak, že jsem si ve své lokální kopii upravil css definice. Mimochodem, okouzlen výkladem o generátorové notaci slovníku jsem se ji jal zkoušet. Ale zapomněl jsem že jedu na verzi 2.5 :-) ZU From prikryl na atlas.cz Wed Feb 29 09:14:47 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 29 Feb 2012 09:14:47 +0100 Subject: [python] Dive Into Pyton 3 cesky -- opraveno, sbiram chyby... In-Reply-To: <4F4D4746.2040109@seznam.cz> References: <20120228131055.58DF13B0@atlas.cz> <4F4D4746.2040109@seznam.cz> Message-ID: <20120229091447.DF719007@atlas.cz> zu1234 napsal... > >Při prohlížení HTML verze mi poněkud vadila velká výška řádků. >Hlavně se tím (na mém (normálně) malém) monitoru znehodnocuje >výborné synchronní označování řádků programu a odpovídajícího komentáře. >Pořešil jsem to tak, že jsem si ve své lokální kopii upravil css definice. Když kliknete dole na Mark Pilgrim, dostanete se na stránku "O knize" http://diveintopython3.py.cz/about.html. Když i na této stránce kliknete dole na Mark Pilgrim, dostanete se na stránku "Tiráž" http://diveintopython3.py.cz/colophon.html ... a na ní se dočtete: "Nikdy nepodceňujte hloubky, do kterých se stále něco odkládající autor noří." Nyní již od Internetu odstřižený, případně pod neznámým pseudonymem se připojující autor je zjevně perfekcionista -- i když to z lehkého stylu psaní nemusí být na první pohled tak patrné. Určitě má nastudované přinejmenším základy typografie. K jejich nejzákladnějším základům patří i volba písma, řádkování, stylu všeho možného. Abych to zkrátil... Věřím, že někdy se zhuštěnější písmo může hodit, ale zrovna tyhle věci nebudu upravovat pro celý zveřejněný překlad knihy. >Mimochodem, okouzlen výkladem o generátorové notaci slovníku jsem se ji >jal zkoušet. Ale zapomněl jsem že jedu na verzi 2.5 :-) Vřele doporučuji přejít na poslední verze Pythonu, tedy na 2.7.2 a na 3.2.2 http://www.python.org/download/ Python 2.7 je velmi dobře použitelný všude tam, kde jste použil Python 2.5. Navíc má implementovánu většinu věcí z Pythonu 3, které se daly přenést. Viz například: c:\>python Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> d = { k:k*3 for k in xrange(5) } >>> d {0: 0, 1: 3, 2: 6, 3: 9, 4: 12} >>> Mějte se fajn a Pythonu... >>> (', '.join(['zdar'] * 3) + '!').capitalize() 'Zdar, zdar, zdar!' >>> Petr From zu1234 na seznam.cz Wed Feb 29 10:05:48 2012 From: zu1234 na seznam.cz (zu1234) Date: Wed, 29 Feb 2012 10:05:48 +0100 Subject: [python] Dive Into Pyton 3 cesky -- opraveno, sbiram chyby... In-Reply-To: <20120229091447.DF719007@atlas.cz> References: <20120228131055.58DF13B0@atlas.cz> <4F4D4746.2040109@seznam.cz> <20120229091447.DF719007@atlas.cz> Message-ID: <4F4DEA6C.5070901@seznam.cz> > Když kliknete dole na Mark Pilgrim, dostanete se na stránku > "O knize" http://diveintopython3.py.cz/about.html. Když i na této > stránce kliknete dole na Mark Pilgrim, dostanete se na stránku > "Tiráž" http://diveintopython3.py.cz/colophon.html > ... a na ní se dočtete: > > "Nikdy nepodceňujte hloubky, do kterých se stále něco odkládající autor noří." > > Nyní již od Internetu odstřižený, případně pod neznámým pseudonymem > se připojující autor je zjevně perfekcionista -- i když to z lehkého stylu Jsem asi jiného ročníku než většina přítomných. Dnes frčí hecker a anonymous. Za mojeho mládí by se řeklo partizán :-)) > psaní nemusí být na první pohled tak patrné. Určitě má nastudované > přinejmenším základy typografie. K jejich nejzákladnějším základům > patří i volba písma, řádkování, stylu všeho možného. Abych to zkrátil... > > Věřím, že někdy se zhuštěnější písmo může hodit, ale zrovna tyhle věci > nebudu upravovat pro celý zveřejněný překlad knihy. To jsem ani neměl na mysli. Jen pokud by to někomu vadilo, tak že to jde upravit. ZU From prikryl na atlas.cz Wed Feb 29 10:42:50 2012 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 29 Feb 2012 10:42:50 +0100 Subject: [python] =?utf-8?q?Dive_Into_Pyton_3_cesky_--_hled=C3=A1m_spolupr?= =?utf-8?q?acovn=C3=ADky_na_generov=C3=A1n=C3=AD_LaTeXu_z_origin?= =?utf-8?b?w6FsdSwgcsWvem7DvWNoIGVib29rIGZvcmVtLi4u?= In-Reply-To: <4F4DEA6C.5070901@seznam.cz> References: <20120228131055.58DF13B0@atlas.cz>, <4F4D4746.2040109@seznam.cz>, <20120229091447.DF719007@atlas.cz> <4F4DEA6C.5070901@seznam.cz> Message-ID: <20120229104250.9BC6A661@atlas.cz> zu1234 ..." >Jsem asi jiného ročníku než většina přítomných. Dnes frčí hecker a >anonymous. Za mojeho mládí by se řeklo partizán :-)) Lidi jsou již několik tisíc let stejní. Mění se jen technologie. Věk nerozhoduje ;) >> Věřím, že někdy se zhuštěnější písmo může hodit, ale zrovna tyhle věci >> nebudu upravovat pro celý zveřejněný překlad knihy. > >To jsem ani neměl na mysli. Jen pokud by to někomu vadilo, tak že to jde >upravit. Nebudu to upravovat v hlavním vzhledu dokumentu, ale pořád je tu možnost, že se může generovat alternativní podoba. Příkladem je už teď generované PDF http://diveintopython3.py.cz/PonormeSeDoPythonu3pdf.zip, které vzniklo s využitím nástrojů, který použil autor originálu pro vznik tištěné podoby originálu. Je to ale forma PDF, která nebyla přijata příznivě, protože kniha potřebuje něco jiného, než vytištění HTML. Ale mám takovou představu, že by se tím někdo mohl dál zabývat. Proto jsem to celé šoupnul na github. Generování solidních alternativ základní formy dokumentu by mě bavilo samotného, ale nemám na to teď moc času. Nějaké dřívější zkušenosti a poznatky ale mám, takže můžu být nápomocný při sdělování svých představ nebo při nějaké pomoci či řízení prací. Jednou z generovaných forem by mohla být "zhuštěná" verze pro malé displeje, případně i pro různé chytré telefony a tak. Chce to ale někoho, kdo to vyzkouší nejdřív šolichat trochu ručně, k něčemu dospěje, probereme to tady v ovzduší "konstruktivní kritiky", aby se to udělalo pořádně. Jako další formu bych rád viděl převod do LaTeX nebo jiné podoby TeX, protože poskytuje vynikající možnosti sazby a také následnou možnost vygenerování kvalitního klikacího a barevného PDF. Ale už jsem z toho trochu vypadl vytrousil jsem dřívější zkušenosti. Pokud by se tady někdo našel, ozvěte se. Pro zájemce budu nápomocen i se zprovozněním Git (systém pro správu verzí, ve kterém je současný stav zachycen i s poslední historií). Na https://github.com/pepr/diveintopython3cz by se to celé soustředilo a mohli by se přidávat další. Jen bych se dovolil prohlásit se za koordinátora, aby se to celé nerozsypalo. Přece jen už jsem do toho vložil dost práce. S pozdravem, Petr