Tento oddíl demonstruje použití API BSD Sockets na dvou velmi jednoduchých programech v jazyku Python verze 2.2.1 nebo vyšší. Programy realizují nespojovanou komunikaci pomocí IPv6/UDP: Po inicializaci soketu běží oba v nekonečné smyčce. Vysílač vysílá každou vteřinu pozdravný řetězec a přijímač jej po obdržení vypíše na terminál spolu s adresou uzlu, který jej poslal. Oba programy je nutno ukončit tvrdě pomocí Ctrl-C
.
Vysílač
from socket import * import time peer = "www.cesnet.cz" port = 54321 af,styp,proto,cn,sa = getaddrinfo(peer, port, AF_INET6, SOCK_DGRAM)[0] s = socket(af,styp,proto) while 1: s.sendto("Ahoj!", sa) time.sleep(1)
Přijímač
from socket import * import time maxlen = 512 port = 54321 af,styp,proto,cn,sa = getaddrinfo(None, port, AF_INET6, SOCK_DGRAM, 0, AI_PASSIVE)[0] s = socket(af,styp,proto) s.bind(sa) while 1: recv = s.recvfrom(maxlen) print "Node", recv[1][0], "said:", recv[0]
Poznámky
Povšimněme si, jak jazyk Python programátora osvobozuje od řady technických detailů (typy proměnných, dosazování implicitních hodnot funkčních argumentů atd.) a také jak celkem přirozeně využívá své objektové konstrukce. Na druhou stranu, v ukázce pro přehlednost zcela pomíjíme ošetřování chyb, k nimž může za běhu dojít. To lze však v Pythonu také elegantně realizovat pomocí programových výjimek (exceptions).
Další příklady použití BSD Sockets v Pythonu jsou uvedeny v manuálu Python Library Reference.