Hvordan lage TCP / IP-pakker kode i C Programming

Opprette et TCP / IP-pakke er viktig når du vil at C-program for å gjøre en aktiv forbindelse med en ekstern vert å sende data fram og tilbake. TCP / IP er en nettverksprotokoll som gir pålitelig og bestilte levering av pakker mellom to verter. World Wide Web, e-post og filoverføring applikasjoner alle bruke TCP / IP-protokollen. Lag en TCP / IP-pakke ved å samle inn data om en vert, gjør en socket ut av dataene og deretter sende kontakten til den eksterne verten.

Bruksanvisning

1 Åpne C-filen i en editor som VC ++.

2 Legg Winsock-biblioteket til kompilatoren prosjektinnstillingene slik at det vil knytte riktig. I VC ++ dette gjøres ved å klikke på "Project" -menyen, klikke på "Settings ..." klikke "Link" og skrive "ws2_32.lib" i boks med tittelen «Object / bibliotek moduler." Andre mulige navn på Winsock bibliotek inkludere "winsock32.lib" og "wsock32.lib."

3 Inkluder "WinSock2" og "ws3tcpip" overskrifter for å få tilgang stikkontakt funksjoner ved å legge til følgende kode på toppen av filen:

inkluderer <winsock2.h> inkluder <ws2tcpip.h>

4 Erklærer variablene som trengs for å skape et TCP / IP-pakke ved å legge til følgende kode i funksjon:

struct addrinfo hint, * res;

int socket_descriptor;

De "addrinfo" structs vil lagre returverdien av "getaddrinfo" -funksjonen. Den "socket_descriptor" er heltall descriptor at den "kontakten" funksjonen vil returnere.

5 Initial variablene ved å legge til følgende kode:

memset (og hint, 0, sizeof hint);

hints.ai_family = AF_UNSPEC;

hints.ai_socktype = SOCK_STREAM;

Den "AF_UNSPEC" verdi angir at adressen familie for "getaddrinfo" -funksjonen kan være noen gyldig type, for eksempel IPv4 eller IPv6. Den "SOCK_STREAM" indikerer en TCP stream socket.

6 Kaller "getaddrinfo" -funksjonen ved å legge til følgende kode:

getaddrinfo ( "www.server.com", "3490", og hint, og res);

Erstatt "www.server.com" med serveren du vil koble til. Erstatt "3490" med port du vil koble til. Den "getaddrinfo" -funksjonen samler protokolluavhengig informasjon om en adresse fra sin vertsnavn, som returnerer i "addrinfo" structs.

7 Lag en TCP / IP socket med "socket" funksjon, ved å legge til følgende kode:

socket_descriptor = socket (De-> ai_family, De-> ai_socktype, res-> ai_protocol);

Den "socket" -funksjonen bruker informasjonen tilbake fra "getaddrinfo" funksjon for å lage en komplett socket.

8 Koble til den eksterne serveren med "connect" -funksjonen ved å legge til følgende kode:

koble (socket_descriptor, De-> ai_addr, res-> ai_addrlen);

Den "connect" -funksjonen tar socket, sender det til den angitte adressen og skaper en aktiv forbindelse med verten.

9 Lagre filen, kompilere og kjøre programmet for å lage TCP / IP-pakke.