Socket - Client-Server

Proiect
5/10 (2 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 6 în total
Cuvinte : 869
Mărime: 6.95KB (arhivat)
Publicat de: Renata Marginean
Puncte necesare: 7
Profesor îndrumător / Prezentat Profesorului: Floarea Nastase
Proiectul este un exemplu de folosire a socket-urilor de tip TCP. El cuprinde doua aplicatii. Compilarea se face sub linux cu comanda make data in directorul proiectului. Dupa compilare se executa mai intai aplicatia server iar dupa aceea se creeaza unul sau mai multi clienti in console diferite (maxim 5 clienti). Am obtinut 3 din 4 puncte(din nota finala)

Extras din proiect

//*************************sercer.c*********************************

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define SERVER_BANNER "Introduceti un numar si voi spune daca este par sau impar !"

#define MAX_CLIENTS 5

//Primeste un mesaj de eroare si il printeaza

void error(char *msg)

{

perror(msg);

exit(1);

}

int main(int argc, char *argv[])

{

int sockfd, newsockfd, portno, clilen;

char buffer[256];

struct sockaddr_in serv_addr, cli_addr;

int n, i, j;

fd_set read_fds; //fd_set folosit in select()

fd_set tmp_fds; //fd_set folosit temporar

int fdmax; //nr maxim de file descriptori

if (argc < 2) {

fprintf(stderr,"Usage : %s portn", argv[0]);

exit(1);

}

//golim read_fds

FD_ZERO(&read_fds);

FD_ZERO(&tmp_fds);

sockfd = socket(AF_INET, SOCK_STREAM, 0);

if (sockfd < 0)

error("ERROR opening socket");

portno = atoi(argv[1]);

memset((char *) &serv_addr, 0, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = INADDR_ANY; // foloseste adresa IP a masinii

serv_addr.sin_port = htons(portno);

if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0)

error("ERROR on binding");

listen(sockfd, MAX_CLIENTS);

//adaugam noul file descriptor in multimea read_fds

FD_SET(sockfd, &read_fds);

fdmax = sockfd;

// main loop

for(;;) {

tmp_fds = read_fds;

if (select(fdmax + 1, &tmp_fds, NULL, NULL, NULL) == -1)

error("ERROR in select");

for(i = 0; i <= fdmax; i++) {

if (FD_ISSET(i, &tmp_fds)) {

if (i == sockfd) {

// o noua conexiune

clilen = sizeof(cli_addr);

if ((newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen)) == -1) {

error("ERROR in accept");

} else {

FD_SET(newsockfd, &read_fds);

if (newsockfd > fdmax) {

fdmax = newsockfd;

}

printf("selectserver: new connection from %sn ", inet_ntoa(cli_addr.sin_addr));

//trimitem banner

n = send(newsockfd, SERVER_BANNER, strlen(SERVER_BANNER), 0);

if (n < 0)

error("ERROR writing to socket");

}

} else {

// am primit date

Preview document

Socket - Client-Server - Pagina 1
Socket - Client-Server - Pagina 2
Socket - Client-Server - Pagina 3
Socket - Client-Server - Pagina 4
Socket - Client-Server - Pagina 5
Socket - Client-Server - Pagina 6

Conținut arhivă zip

  • Socket - Client-Server.doc

Te-ar putea interesa și

Framework Pentru Administrarea Rețelelor de Calculatoare

Rezumat Prin această lucrare ne propunem realizarea unei aplicaţii software care să ajute un utilizator sau administrator de reţea Linux să...

Sistem de comandă cu Raspberry PI

1. Introducere Într-o lume din ce în ce mai automatizată mașinăriile joacă un rol foarte important în viața oamenilor. Omenirea a căutat...

Comunicarea în rețea - aplicație client-server

CAPITOLUL 1. INTRODUCERE Încă din 1945, când a început era calculatoarelor şi până în 1985, calculatoarele erau foarte mari şi costisitori. Chiar...

Disertație CWS

1.Privire de ansamblu asupra aplicatiei CWS face posibil ca mai multii utilizatori sa interactioneze prin intermediul internetului. Acestia pot...

Programarea Aplicațiilor de Rețea

ABSTRACT: La nivelul transport, internetul are două protocoale principale: User Datagram Protocol (UDP, neorientat - conexiune) si Transmission...

Sistem de comunicație client server

Introducere In cadrul acestui proiect am realizat un sistem de comunicatie client server bazat pe socket TCP,fire de executie si interfata grafica...

Comunicația client server prin socket

Comunicatia client-server prin socket 1. Modelul de referinta OSI In anii 80 cand ideea de retea a castigat din ce in ce mai multi adepti,...

Aplicație client-server

Sa se realizeze o aplicatie client-server bazata pe socket-uri. Serverul va accesa o baza de date (la alegere:fisier text, xml, access sau sql) si...

Ai nevoie de altceva?