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)
Cost: 5 puncte
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 document

//*************************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

Alții au mai descărcat și

Proiectarea Aplicatiilor de Comert Electronic - Aplicatie de Food-Ordering

Progresele realizate recent în domeniile tehnologie-calculatoare, telecomunicatii si software, precum si în alte domenii ale informatiei, au...

Procesarile Interogarilor in Sisteme de Gestiune a Bazelor de Date Distribuite

CAPITOLUL I NOTIUNI INTRODUCTIVE DESPRE BAZE DE DATE DISTRIBUITE GENERALITATI Procesarea cererilor este o aplicatie cu performante critice, în...

Comanda Mpp Implementata pe Calculator

INTRODUCERE Apariţia microprocesoarelor, microcontrolerelor şi a calculatoarelor personale a deschis noi posibilităţi controlului şi comenzii in...

Sisteme de Operare - UNIX

Sistemul de fisiere Datele si programele sunt pastrate, ca si in alte sisteme de operare, in fisiere memorate pe discuri magnetice. Fiecare disc...

Tehnologia Client-Server

O arhitectura client/server: reprezinta un model de descompunere a unei aplicatii în doua componente distincte: o componenta client si o componenta...

Aplicație client - server a unui grup de studenți

Capitolul 1 . Introducere În acest proiect avem de realizat o aplicație client - server a unui grup de studenți . Scrierea codului sursa vom...

Sisteme de Operare

Sesiune de lucru UNIX. Comenzi Shell : 1. Deschiderea unei sesiuni de lucru : se face la intrarea in sistemul UNIX sau dupa lansarea unui...

Arhitectura Sistemelor Distribuite

Cap. II Arhitectura sistemelor distribuite Sistemele distribuite implementate pâna în prezent evidentiaza o varietate arhitecturala mare. Cu...

Ai nevoie de altceva?