Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Protocoale de Internet
#include<sys/types . h>
#include<sys/socket . h>
#include<arpa/inet . h>
#include<netinet/in . h>
#include<string . h>
//declarare functie care efectuaza transferul comenzii la server si apoi primeste de la acesta mesajul si il trimite la
//client . primeste ca parametrii sirul de caractere primite de la client si socketul clientului
int trimite_la_server(char a[2],int newsockfd)
/*conectare*/
if(connect(sockfd2,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)//conectare la server cu mesaj in cazul in care nu sa reusit
/*primitiva care incearca si stabileasca o conexiune a clientului la un
server . Ea blocheaza procesul client pana cand conexiunea este stabilita .
*/
printf(' am reusit conectarea la server IPv6 n');
char com1[]='core show uptime',com2[]='core show version',com3[]='iax2 show provisioning';
//verificarea comenzii trimise ca parametru si transmiterea comenzii corespunzatoare serverrului IPv6
if(strcmp(a,'01#')==0)//daca clientul a trimis mesajul 01#
else if(strcmp(a,'02#')==0)//daca clientul a trimis mesajul 02#
else if(strcmp(a,'06#')==0)//daca clientul a trimis mesajul 03#
else//daca nu sa transmis niciuna din comenzile 01#,02#,06# atunci se transmite la client
//mesajur 'comanda invalida'
char sir[100]=' ';
printf('n Astept Raspunsul Server:nn');
printf('Serverul a transmis:%s n',sir);
//Transmit clientului mesajul 'Serverul IPv6 a raspuns'
char sir1[]='Serverul de IPv6 a raspuns: n';
send(newsockfd,sir1,strlen(sir1)+1,0);
char aux[]=' ';
int nr;
//receptionez mesajul de la server si il transmit la client
do
while(nr>0);//se executa atata timp cat nr de biti receptionati este diferit de 0, adica serverul transmite
close(sockfd2);//inchide socketul
printf('n n am inchis connexiunea cu serverul ipv6 astept noi comenzin');
return 1;
}
/*#########################################################################################################*/
int main(void)
printf('socket creat n');
serv_addr . sin_family=PF_INET;//tipul adresei
serv_addr . sin_addr . s_addr=htonl(INADDR_ANY);//accepta conexiuni de la orice client
serv_addr . sin_port=htons(14444);//initializare port pentru primirea datelor de la client
printf('fac bind');
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)//fac bind
/*
bind() este o primitiva care ataseaza o adresa locala (adresa IP si numar port), la
un socket nou creat cu primitiva socket() . Pentru a se referi la acelasi socket,
primitivele socket() si bind() folosesc acelasi descriptor de comunicatie .
*/
do
printf('client connectat');
int gasit=1;
char a[2],com1[]='a fost executata cu succes comanda core show uptime';
char com2[]='a fost executata cu succes comanda core show version',com3[]='a fost executata cu succes comanda iax2 show provisioning';
char com4[]='comanda este invalida, va rugam introduceti urmatoarea comanda';
//recv(sockfd,a,3,0);
int nr=1;
while(nr>0)//atata timp cat clientul este conectat, adica numarul de biti receptionati este mai mare ca 0
//sfarsit daca
}//sfarsit sesiune de comunicari cu clientul in momentul in care acesta se deconecteaza,inchide socket-ul,
//adica numaru de biti receptionati este 0
close(newsockfd);//inchid socketul pentru client
/*close(): primitiv` care se nchide socketul deschis cu primitiva socket() .
*/
}while(1);//se executa la infinit
}
Copyright © 2024 - Toate drepturile rezervate