Unix Socket – Server Examples
ahhoz, hogy egy folyamat TCP szerver legyen, követned kell az alábbi lépések −
-
hozzon létre egy foglalatot a Socket() rendszerhívással.
-
kösse össze a foglalatot egy címhez a bind() rendszerhívás segítségével. Az interneten található kiszolgálóaljzat esetében a cím a gazdagép portszámából áll.
-
Hallgassa meg a listen() rendszerhívással való kapcsolatot.
-
kapcsolat elfogadása az accept() rendszerhívással. Ez a hívás általában addig blokkol, amíg az ügyfél nem csatlakozik a kiszolgálóhoz.
-
adatok küldése és fogadása a read() és write() rendszerhívások segítségével.
most tegyük ezeket a lépéseket forráskód formájában. Tegye ezt a kódot a fájlkiszolgálóba.c és fordítsd le a gcc fordítóval.
több kapcsolat kezelése
annak érdekében, hogy a szerver több egyidejű kapcsolatot kezelhessen, a fenti kódban a következő változtatásokat hajtjuk végre −
-
az accept utasítást és a következő kódot végtelen hurokba helyezzük.
-
a kapcsolat létrejötte után hívja a fork() függvényt egy új folyamat létrehozásához.
-
a gyermek folyamat bezárja sockfd és hívja doprocessing függvény, átadva az új socket fájl leíró argumentumként. Amikor a két folyamat befejezte a beszélgetést, amint azt a doprocessing() visszatérés jelzi, ez a folyamat egyszerűen kilép.
-
a szülő folyamat bezárja newsockfd. Mivel ez a kód végtelen hurokban van, visszatér az accept utasításhoz, hogy megvárja a következő kapcsolatot.
a következő kódsor a doprocessing funkció egyszerű megvalósítását mutatja.