Il codice del server_tcp è il seguente:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define QUEUE_LEN 20
#define BUFF_SIZE 20
int main(int argc, char* argv[])
{
int sk; /* Socket per la comunicazione del server */
int client; /* Socket per la comunicazione con il client */
int ret; /* Ritorno delle funzioni */
int len; /* Dimensione strutture dati */
struct sockaddr_in s_addr; /* Indirizzo Server */
struct sockaddr_in c_addr; /* Indirizzo Client */
char buffer[BUFF_SIZE]; /* Buffer di Invio/Ricezione dati */
int port = 2001; /* Porta del Server */
char address[] = "127.0.0.1"; /* Indirizzo IP del Server */
/* Creazione del socket */
sk = socket(AF_INET, SOCK_STREAM, 0);
if (sk < 0) return -1;
/* Inizializzazione indirizzo del Server */
bzero(&s_addr, sizeof(s_addr));
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(port);
s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
/* Bind del socket */
ret = bind(sk, (struct sockaddr*) &s_addr, sizeof(s_addr) );
if (ret < 0) return -1;
/* Creazione coda di richieste di connessione */
ret = listen(sk, QUEUE_LEN);
if (ret < 0) return -1;
/* Inizializzazione indirizzo del Client */
bzero(&c_addr, sizeof(c_addr));
len = sizeof(c_addr);
/* Accept connessioni con i client */
client = accept(sk, (struct sockaddr*)&c_addr, &len );
/* Ricezione Dati */
ret = recv(client, buffer, BUFF_SIZE, 0);
if (ret < 0) return -1;
printf("Server Receive: %s\n", buffer);
/* Invio Dati */
ret = send(client, buffer, BUFF_SIZE, 0);
if (ret < 0) return -1;
printf("Server Send: %s\n", buffer);
/* Chiusura del socket di comunicazione con il Client */
close(client);
return 1;
}
Per compilarlo basta digitare il comando:
gcc -o server_tcp server_tcp.c
dove server_tcp.c è il nome del file contenente il codice del server.
Nessun commento:
Posta un commento