<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000099" bgcolor="#ffffff">
<font face="Calibri">Dobrý den,<br>
<br>
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.<br>
<br>
Pokud bych neměl definován tvar paketu, tak bych použil <br>
<br>
<font face="Courier New">s = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM )<br>
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)<br>
s.sendto(data, host, port))<br>
<br>
<font face="Calibri">, ale jelikož je přesně definována velikost
a struktura paketu, tak tento způsob nemohu použít. <br>
<br>
Formát je definován následovně:<br>
- 4B jsou rezervovány na identifikátor spojení<br>
- 2B jsou rezervovány na sekvenční číslo<br>
- 2B jsou rezervovány na číslo potvrzení<br>
- 1B je rezervován na příznak<br>
- 0-256B je rezervováno na data<br>
<br>
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.<br>
<br>
Použil jsem tedy funkci struct.pack()<br>
<br>
<font face="DFKai-SB">data = struct.pack("!IHHB256s", 0, 0, 0,
1, "1")<br>
s.sendto(data, (host, port))<br>
</font><br>
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ě.<br>
<br>
Prosím Vás tedy o nějaký nápad, jak dál postupovat a jestli je
např. použití modulu struct vhodné.<br>
<br>
Děkuji za každou radu<br>
<br>
Jakub<br>
</font></font></font>
</body>
</html>