Socket programozás Példák

Slides:



Advertisements
Hasonló előadás
Egy közösségi brainstorming platform technológiai stackje – JUM Marhefka István CTO.
Advertisements

System Statistical Functions. CPU Tesztelése SELECT AS busy Vissza adja milliszekundumban, mennyi időt töltött munkával a szerverünk indítás.
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
Bevezetés a tárgyakhoz Tárgyak  Objects are the containers for values of a specified type  Objects are either signals, variables or constants  Once.
FelültöltésVHDL Felültöltés (Overloading) n Áttekintés n Példák.
 Lineáris egyenlet  algebrai egyenlet  konstansok és első fokú ismeretlenek  pl.: egyenes egyenlete  Lineáris egyenletrendszer  lineáris egyenletek.
 Gauss szűrő uniform sampler2D colorMap; const float kernel[9] = float[9]( 1.0, 2.0, 1.0, 2.0, 4.0, 2.0, 1.0, 2.0, 1.0); out vec4 outColor; void main(){
Image készítés Windows AIK segítségével
TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
Motor Potencióméter Kincses Levente Elektronika 89/2004.
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák tömbökre
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Borland C/C++ mintapéldák struktúrákra. 1. példa /* Egyszerû példa a struktúrák használatára */ #include #define SIZE 5 struct szemely { char nev[26];
„21. századi közoktatás – fejlesztés, koordináció” TÁMOP / számú kiemelt projekt eTwinning: a digital touch in teacher training Klaudia.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
Programozás I. Horváth Ernő.
Delegátumok C#-ban Krizsán Zoltán iit 1.0.
Course Situation and Event Driven Models for Multilevel Abstraction Based Virtual Engineering Spaces Óbuda University John von Neumann Faculty of Informatics.
Haladó Programozás Adatbázis és felhasználó létrehozása MS SQL Server alatt Adatbázisok elérése DbConnection/DbReader módszerrel (Nem tananyag!) SQL server.
File Classification Infrastructure
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Természetesen P = Q = O esetén O + O = O. Tetszőleges, nem 2, vagy 3 karakterisztikájú test esetén hasonló módon eljárva E(K)-n zárt műveletet.
C++ alapok, harmadik óra
Számítógépes Hálózatok
Európai Neutronkutató Központ létesítése Magyarországon
További vektor, mátrix algoritmusok
VFP xBase adatkezelés - munkaterületek - DML - DDL - navigáció - eljárások, függvények - vezérlési szerkezetek - változók - képernyő IO - mintaprogram.
A megértés körei Binzberger Viktor Budapest Műszaki és Gazdaságtudományi Egyetem Filozófia és Tudománytörténet Tanszék.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
PHP VI Adatbázisok, MySQL
Multimédiás programok készítése Macromedia Director fejlesztői környezetben 4. előadás Készítette: Kosztyán Zsolt
Windows Server 2008 { PowerShell }
Alertet indíthat egy: SQL Server esemény (LOG) SQL Server performancia érték WMI events Alert végezhet: Operátor értesítést JOB indítás (válasz az eseményre)
Prog1, C a gyakorlatban Magasszintű programozási nyelvek 1 mérnök informatikus BSc előadás Bátfai Norbert egyetemi tanársegéd
Alkalmazások és operációs rendszerek optimizálása „Babeş-Bolyai” Tudományegyetem, Matematika-Informatika Kar Windows NT driverek fejlesztése: Virtuális.
Vezérlők használata és írása Ez az előadó neve beosztása vállalata.
Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - III. / 1 13.Állományok, bejegyzések 14.Folyamok 15.Közvetlen hozzáférésű állomány.
Hasznos ismeretek Hogyan bővítsük ismereteinket AVRDUDEflags -E noreset.
Tanulni, tanulni, tanulni Értékesítői képességek, a személyzet képzése.
Könyvtár, csomag és alprogramokVHDL Könyvtár, csomag és alprogram n Library és use n Package n Alprogramok –Procedure –Function –Resolution function Egy.
Típusváltás (Type Conversion) n Áttekintés n Példák.
Multilingual websites in Hungary Gabriella Szalóki Egy előadás könnyen vitára ösztönözheti a hallgatóságot. A PowerPoint bemutatók használatával azonban.
Készítette: Csíki Gyula
Motor II. Env map Spotlight Szécsi László. Letöltés /code/E/code/EggCoreSecondBase.zip Kibontani (vagy előző labor folyt.):
Vízfelület Szécsi László. Nyílt víz a nyílt óceánon a felületi cseppecskék körmozgást végeznek trochoid hullámforma hullámhossz hullámmagasság amplitúdó.
Transzformációk, textúrák, árnyalás Szécsi László.
Server, Client. Client-Server Client numPlayers Id ServerMessage ClientMessage Server numPlayers ClientMessages[] ServerMessage Ha a kliens ugyanazt az.
V. labor Thread, animáció. Animáció A figurák a lépés kijelölése után nem rögtön az új helyen teremnek, hanem egyenes vonal mentén mozognak a cél felé.
II. labor Lépések kezelése. Új metódus a Square osztályba public static int letterToFileIndex(char letter) throws NumberFormatException { int i = 0; for.
Kamera, 3D, transzformációk Szécsi László. Math.zip kibontása az Egg projectkönyvtárba – float2, foat3, float4 típusok, HLSL-ben megszokott műveletekkel.
Geometry instancing Szécsi László. copy-paste-rename gg009-Gui folder vcxproj, filters átnevezés solution/add existing project rename project working.
Textúrázás Szécsi László. giraffe.jpg letöltése SolutionDir/Media folderbe.
 Map  Reduce  Scan  Histogram  Compact const size_t dataSize = 1024; cl_kernel mapKernel = cl.createKernel(clProgram, "map"); float* hData = new.
 Kvantált kép fényesség értékei: G [ 0, Gmax ]  G fényességű pontok száma: P(G)
GPGPU labor XII. Tomográfiás rekonstrukció. Kezdeti teendők Tantárgy honlapja, Monte Carlo szimuláció A labor kiindulási alapjának letöltése (lab12_base.zip),
GPGPU labor X. Monte Carlo módszerek. Kezdeti teendők Tantárgy honlapja, Monte Carlo módszerek A labor kiindulási alapjának letöltése (lab10_base.zip),
GPGPU labor IX. Lineáris egyenletrendszerek megoldása.
GPGPU Labor 15.. Párhuzamos primitívek Map Reduce Scan Histogram Compact.
3. lesson made by Gönczi Zsófia. You can sit down only, if you say the following words correct!
Miért is jók a rétegek?  Ha alkalmazást készítünk, nem akarunk IP csomagok küldésével bajlódni Ethernet keretekkel foglalkozni Implementálni megbízható.
SpecificationWebStandardEnterpriseDatacenterItaniumFoundation X64 Sockets44864  1 IA64 Sockets  64  X64 RAM32 GB 2 TB  8 GB IA64 RAM 
P árhuzamos és Elosztott Rendszerek Operációs Rendszerei Rövid András
Beginner Dialogues - In a motel / hotel Getting a room for the night - Good evening. Can I help you? - Yes, please. I'd like a room for the night. - Would.
PHP-SQL adatbáziskezelő parancsai
OCT. 31 – NOV. 3, 2016 Ms. Crouse and Mrs. Leverence First Grade
Előadás másolata:

Socket programozás Példák

Áttekintés Client Server Connection request Client / Server Session socket socket bind listen Connection request connect accept read close EOF read write Client / Server Session

Select demo – Beej’s guide #include <stdio.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> #define STDIN 0 // file descriptor for standard input int main(void) { struct timeval tv; fd_set readfds; tv.tv_sec = 2; tv.tv_usec = 500000; FD_ZERO(&readfds); FD_SET(STDIN, &readfds); // don't care about writefds and exceptfds: select(STDIN+1, &readfds, NULL, NULL, &tv); if (FD_ISSET(STDIN, &readfds)) printf("A key was pressed!\n"); else printf("Timed out.\n"); return 0; }

Select demo – Server side … fd_set master; fd_set readfds; int maxfds = sock; FD_ZERO(&master); FD_SET(sock, &master); for(;;) { readfds = master; select( maxfds+1, &readfds, 0, 0, 0 ); for (i=0; i<=maxfds; ++i) { if (FD_ISSET(i, &readfds)) { if (i==sock) { //új kliens akar csatlakozni int conn = accept(i, …); FD_SET(conn, &master); if (conn > maxfds) maxfds = conn; } else { // meglévő klienstől kaptunk üzenetet if ((rbytes=read(i, buf, sizeof(buf)))<=0) { // hiba ha <0 , a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább } else { // kapott üzenet feldolgozása… }

Select demo – Server side … fd_set master; fd_set readfds; int maxfds = sock; FD_ZERO(&master); FD_SET(sock, &master); for(;;) { readfds = master; select( maxfds+1, &readfds, 0, 0, 0 ); for (i=0; i<=maxfds; ++i) { if (FD_ISSET(i, &readfds)) { if (i==sock) { //új kliens akar csatlakozni int conn = accept(i, …); FD_SET(conn, &master); if (conn > maxfds) maxfds = conn; } else { // meglévő klienstől kaptunk üzenetet if (rbytes=read(i, buf, sizeof(buf))<=0) { // hiba ha <0 , a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább } else { // kapott üzenet feldolgozása… }

Select demo – Server side … fd_set master; fd_set readfds; int maxfds = sock; FD_ZERO(&master); FD_SET(sock, &master); for(;;) { readfds = master; select( maxfds+1, &readfds, 0, 0, 0 ); for (i=0; i<=maxfds; ++i) { if (FD_ISSET(i, &readfds)) { if (i==sock) { //új kliens akar csatlakozni int conn = accept(i, …); FD_SET(conn, &master); if (conn > maxfds) maxfds = conn; } else { // meglévő klienstől kaptunk üzenetet if (rbytes=read(i, buf, sizeof(buf))<=0) { // hiba ha <0 , a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább } else { // kapott üzenet feldolgozása… }

Select demo – Server side … fd_set master; fd_set readfds; int maxfds = sock; FD_ZERO(&master); FD_SET(sock, &master); for(;;) { readfds = master; select( maxfds+1, &readfds, 0, 0, 0 ); for (i=0; i<=maxfds; ++i) { if (FD_ISSET(i, &readfds)) { if (i==sock) { //új kliens akar csatlakozni int conn = accept(i, …); FD_SET(conn, &master); if (conn > maxfds) maxfds = conn; } else { // meglévő klienstől kaptunk üzenetet if ((rbytes=read(i, buf, sizeof(buf)))<=0) { // hiba ha <0 , a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább } else { // kapott üzenet feldolgozása… }

Select demo – Server side … fd_set master; fd_set readfds; int maxfds = sock; FD_ZERO(&master); FD_SET(sock, &master); for(;;) { readfds = master; select( maxfds+1, &readfds, 0, 0, 0 ); for (i=0; i<=maxfds; ++i) { if (FD_ISSET(i, &readfds)) { if (i==sock) { //új kliens akar csatlakozni int conn = accept(i, …); FD_SET(conn, &master); if (conn > maxfds) maxfds = conn; } else { // meglévő klienstől kaptunk üzenetet if ((rbytes=read(i, buf, sizeof(buf)))<=0) { // hiba ha <0 , // a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább } else { // kapott üzenet feldolgozása… }

Server leállítása void closeServer(int); Int main() { … signal( SIGTERM, closeServer ); } void closeServer(int sig) { // kilőtték a szervert, //itt tudod elvégezni a leállításhoz szükséges teendőket

Server - foglalt port sock = socket(…); … int yes=1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); bind(sock, …);

UDP alapú kommunikáció Forrás:http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Frzab6%2Frzab6connectionless.htm

UDP datagram socket Üzenet küldés: int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, socklen_t tolen); Üzenet fogadása: int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

Extra feladat többlet pontok szerzéséhez: Több felhasználós számológép megvalósítása (ld. feladatok.txt)