oktatas:programozas:c:halozat
Tartalomjegyzék
Hálózatprogramozás
- Szerző: Sallai András
- Copyright © Sallai András, 2011, 2018
- Web: https://szit.hu
Alapismeretek
AF_INET
Az AF az Address Family szóból alkotott mozaikszó. Címcsaládnak fordíthatnánk. Az INET az IPv4 protokollt jelenti.
A következő címcsaládok vannak:
- AF_INET – PF_INET egy szinonima (ARPA Internet protokollok)
- AF_INET6
- AF_UNIX – PF_UNIX egy szinonima
- AF_UNIX_CCSID
- AF_NS
- AF_TELEPHONY
- PF_IMPLINK – IMP „host az IMP-nél” (link réteg)
A következő socketek lehetségesek:
- SOCK_STREAM – TCP kapcsolatokhoz
- SOCK_DGRAM – UDP protokollhoz
- SOCK_RAW – IP protokollhoz
- SOCK_SEQPACKET – SPX protokollhoz
- SOCK_RDM – Nincs implementálva
Egy TCP szerver C nyelven
- server.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> main() { int sockfd, newsockfd, portno, clilen, n; struct sockaddr_in serv_addr, cli_addr; char buffer[256]; sockfd = socket(AF_INET, SOCK_STREAM, 0); if(sockfd<0) error("HIBA a socket megnyitásakor"); bzero((char *) &serv_addr, sizeof(serv_addr)); portno = 12345; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(portno); serv_addr.sin_addr.s_addr = INADDR_ANY; if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))) error("HIBA a binding során"); listen(sockfd, 1); clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if(newsockfd<0) error("HIBA a fogadás során"); bzero(buffer, 256); while(newsockfd) { n = read(newsockfd, buffer, 255); if(n < 0 ) error("HIBA a socket olvasása során"); printf("%s\n", buffer); char uzi[10] = "uzike\n"; n = write(newsockfd, uzi, strlen(uzi)); if(n<0) error("HIBA a sockat írása során"); } }
Fordítás:
gcc -o server server.c
Irodalom
- man socket (Debian9)
oktatas/programozas/c/halozat.txt · Utolsó módosítás: 2019/08/21 19:01 szerkesztette: admin