Socket programozás Példák

Hasonló dokumentumok
Számítógépes hálózatok

Hálózati architektúrák laborgyakorlat

Dr. Varga Imre Debreceni Egyetem, Informatikai Kar. Socket-programozás. C nyelven, Linux alatt

Dr. Varga Imre. Socket-programozás. C nyelven

Számítógépes hálózatok I.

Számítógépes Hálózatok 2012

Számítógépes Hálózatok GY 4.hét

FTP: Elkülönített kontroll- és adatkapcsolat. FTP: File Transfer Protocol

Számítógépes Hálózatok. 4. gyakorlat

Számítógépes hálózatok

Számítógépes Hálózatok ősz 2006

Számítógép-hálózatok: 4. Labor. TCP kliens. A gyakorlat célja:

Számítógépes Hálózatok GY 3-4.hét

Számítógépes Hálózatok. 9. gyakorlat

TCP szerver. TCP szerver alkalmazás írásának az elsajátítása TCP protokoll tulajdonságainak a tanulmányozása kisérleti úton

Socketek programozása

Számítógép labor V. Egyszer Web szerver. Dokumentáció. Készítette: Ács Gergely (K4C03M)

Bevezetés a SOCKET programozásba UDP kliens

SOCKET használata UDP kliens

Gyorstalpaló hálózatprogramozás C nyelven UNIX. környezetben

TCP/IP SOCKET INTERFACE

UDP idő szerver. UDP protokollal kapcsolatos ismeretek elmélyítése. Egy UPP protokollt használó időszerver megvalósítása

Kommunikáció - Wi-Fi, Mobil internet - Bluetooth - GSM / GPRS és SMS - NFC

Számítógépes Hálózatok. 3. gyakorlat

Kommunikáció Androidon Mobilinternet Wifi

TCP szerver készítése

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Számítógépes Hálózatok. 3. gyakorlat

UNIX folyamatok kommunikációja

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Számítógépes Hálózatok. 5. gyakorlat

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Számítógépes Hálózatok. 7. gyakorlat

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Programozás 5. Dr. Iványi Péter

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Körkörös listák. fej. utolsó. utolsó. fej

2. fejezet Hálózati szoftver

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Országzászlók (2015. május 27., Sz14)

Programozás II. Fájlkezelés

Osztály és objektum fogalma

9. MPI

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

1. Bevezető. 2. IP cím és szolgáltatások felderítése

UNIX folyamatok kommunikációja

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Hálózatbiztonság Androidon. Tamas Balogh Tech AutSoft

Modla Ferenc augusztus Port szkennelés

Programozás I gyakorlat. 5. Struktúrák

RPC Remote Procedure Call Távoli eljárás hívás

Információs Technológia

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

Silabs STK3700, Simplicity Studio laborgyakorlat

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

EMTP, EGY ÚJ LEVELEZÕ PROTOKOLL ÉS IMPLEMENTÁCIÓJA

C programnyelv 1. Kedves Kollegina, Kolléga!

Programozás II. 2. Dr. Iványi Péter

Programozás 6. Dr. Iványi Péter

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Iványi László ARM programozás. Szabó Béla 8.Óra Bluetooth 4.0 elmélete, felépítése

Operációs rendszerek. 4. gyakorlat: Szignálok küldése, kezelése

Az új be- és kimenet könyvtár

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Teleoperáció Robot vezérlése IP-hálózaton

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

Az adatszolgáltatási rendszer kliens felülete

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Mérési útmutató a Secure Shell (SSH) controll és audit című méréshez

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Elemi alkalmazások fejlesztése IV.

.NET alapszolgáltatások 2.

Operációs rendszerek. 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor)

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Beej útmutatója a hálózati programozáshoz

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

SSH haladóknak. SSH haladóknak

Elosztott rendszerek

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Programozás II gyakorlat. 4. Öröklődés

Információs Technológia

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Fejlett programozási nyelvek C++ Iterátorok

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Átírás:

Socket programozás Példák

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

3

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) { else { // hiba ha <0, // a kliens bontotta a kapcsolatot ha =0 close(i); FD_CLR(i, &master); // nem figyeljük tovább // 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)