25.11.2014 Views

Treball de recerca - IES Narcís Monturiol

Treball de recerca - IES Narcís Monturiol

Treball de recerca - IES Narcís Monturiol

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!