Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:c:halozat

< C

Hálózatprogramozás

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

oktatas/programozas/c/halozat.txt · Utolsó módosítás: 2019/08/21 19:01 szerkesztette: admin