Treball de recerca - IES NarcÃs Monturiol
Treball de recerca - IES NarcÃs Monturiol
Treball de recerca - IES NarcÃs Monturiol
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Bubble Racer: Com crear un vi<strong>de</strong>ojoc amb Blen<strong>de</strong>r<br />
Robert Planas<br />
Aquest codi és molt similar el exemple anterior però en aquest cas usem la funció<br />
sock.listen(1) per escoltar connexions entrants, acceptant com a molt 1 connexió. Un cop<br />
acceptada la connexió en guar<strong>de</strong>m les da<strong>de</strong>s a les variables socket_client i da<strong>de</strong>s_client. El<br />
primer correspon al socket <strong>de</strong>l client i en posseïx les funcions com si d'un socket propi es<br />
tractes. La segona és una matriu amb la IP i port <strong>de</strong>l client.<br />
Dins el bucle les coses tornen a canviar. En lloc <strong>de</strong> enviar un missatge el rebrem, per això<br />
usem la funció recv() <strong>de</strong>l socket client. Especificant que rebrem fins a un màxim <strong>de</strong> 1000<br />
bytes. Les da<strong>de</strong>s rebu<strong>de</strong>s en bytes les convertim en text amb la funció str() i en guar<strong>de</strong>m el<br />
resultat en una variable string anomenada “missatge”.<br />
Els missatges que s'imprimeixen en la terminal <strong>de</strong> Windows <strong>de</strong>l programa servidor po<strong>de</strong>n<br />
contenir alguns caràcters estranys a principi i final <strong>de</strong> línia. Això és <strong>de</strong>gut al canvi <strong>de</strong><br />
codificació <strong>de</strong>l UTF-8 <strong>de</strong> la variable al ASCII <strong>de</strong> la consola. Aquest error no succeïx en<br />
Linux, dons la consola <strong>de</strong> Linux és UTF-8.<br />
5.2.2 Xat amb múltiples clients.<br />
Ara intentarem crear un xat a traves <strong>de</strong> sockets. Per crear el xat crearem dos programes, un<br />
client i un servidor, però en aquest cas funcionaran <strong>de</strong> forma completament diferent al<br />
exemple anterior. El servidor s'encerregarà d'escoltar i acceptar connexions, els clients<br />
enviaran missatges al servidor i aquest al mateix temps retornara el missatge a la resta <strong>de</strong><br />
clients. A continuació po<strong>de</strong>m veure el codi complet que correspon al servidor. Com a novetat<br />
he usat la llibreria select a més <strong>de</strong> la llibreria socket que ja hem vist anteriorment. La llibreria<br />
select resulta útil a l'hora <strong>de</strong> crear llistes o taules que utilitzarem per guardar la informació <strong>de</strong><br />
cada socket que es connecti. Però més endavant veurem que pot resultar prescindible.<br />
Pàg. 34