Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-08-2006, 23:20   #1
maccette
Junior Member
 
Iscritto dal: Aug 2006
Messaggi: 1
programmazione socket|| esame per dopodomani notte help!!

ciao, devo consegnare un programma funzionante per dopodomani notte e mi si inceppa sulle librerie; la traccia e' su http://taurus.polito.it/~lioy/01fqt/pad06_hw1c.pdf

vi posto il programma che ho fatto sperando che mi possiate aiutare. grazie
uso dev-c con il winsock, ma da' problemi di undefined(tra gli altri)

#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <errno.h>

//#include "errlib.h"
//#include "sockwrap.h"
#ifndef socklen_t
#define socklen_t uint32_t
#endif



#define MAX 256
#define MAXSTR 30
#define MAXBUF 255
#define SEPARATORE ";"
#define uint32_t
#define LISTENQ 15

#define PORTA_DFT 54321
#define UTENTI_DFT 2
#define FILE_DFT "prodotti.txt"

char *prog;
int num_utenti=0;

void sigchld_h(int signum);
uint32_t Find(char *nomefile,char *prodotto,uint8_t Q);


int main (int argc, char *argv[]){
// inizializzazioni
int listenfd, connfd;
struct sockaddr_in servaddr, cliaddr;
socklen_t cliaddrlen;
pid_t pid;
uint8_t zero=0, dcc=255, last, Q;
uint16_t porta=0, prezzo;
uint32_t somma=0, nsomma;

int utenti=0, i, f, flag;
char *nomefile=(char *)malloc(sizeof(char)*MAXBUF);
char *temp1=(char *)malloc(sizeof(char)*MAXBUF);
char *temp2=(char *)malloc(sizeof(char)*MAXBUF);
//char nome_utente[7];
char line[255], ist[10];

int auth_ret = 0;
int ret=0;

prog = argv[0];

if(argc>4)
{
err_quit("Usage: %s too many arguments", prog);
// con troppi parametri esco generando errore
}
if (argc >1 )
for (i=1; i<argc ; i++)
{
if (argv[i][0]=='-') // se l'input e' scritto correttamante con il '-'
{
switch(argv[i][1]) // c'e' la scelta fra
{
case 'f': // nome del file da input
memcpy(nomefile, &argv[i][2], MAXBUF);
break;

case 'p': // numero della porta da tastiera
memcpy(temp1, &argv[i][2], MAXBUF);
porta= atoi(temp1); // converto in intero
break;

case 'n': // numero di figli da tastiera
memcpy(temp2, &argv[i][2], MAXBUF);
utenti=atoi(temp2);
break;

default:
err_quit("Usage: %s invalid parameter; enter -[fpn] parameter", prog);
break;
} // end switch
}
else // senza -
{
err_quit("Usage: %s invalid parameter; enter -[fpn] parameter", prog);
}
} // end for
} // end if

} //end else


// se non sono stati inseriti da input imposto i parametri di default
if ((memcpy(nomefile,"",strlen(nomefile)))==0)
{
memcpy(nomefile, FILE_DFT, MAXBUF);
}

if (porta==0)
{
porta= PORTA_DFT;
}

if (utenti= UTENTI_DFT)
{
utenti= UTENTI_DFT;
}


//inizializzazioni del socket di ascolto
listenfd = Socket(AF_INET, SOCK_STREAM, 0);

memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(porta);

// funzioni principali: bind collega il socket al servaddr
Bind(listenfd, (SA*)&servaddr, sizeof(servaddr));
// la listen si mette in ricezione
Listen(listenfd, LISTENQ);
// signal dovrebbe
signal(SIGCHLD, sigchld_h);

while(1){
cliaddrlen = sizeof(cliaddr);
connfd = Accept (listenfd, (SA*)&cliaddr, &cliaddrlen);

if (num_utenti==utenti){
Writen(connfd, "%u\r\n", dcc);
Close(connfd);
continue;
}
else {
Writen(connfd,"%u\r\n", zero);
num_utenti++;
}
// figlio
if((pid=fork())==0){
Close(listenfd);

// valori iniziali dei parametri del figlio
somma=0;
f=1;
Readline(connfd, line, MAX); //legge la linea di comando con l'istruzione
while {strcmp(line,"")!=0) { // confronta la linea con l' insieme vuoto
strncpy(ist,line, 3); // ritaglia le prime tre lettere

if (strncmp(line,"USR",3)==0) // se è USR puo' passare dallo stato non autenticato
// controlla se il messaggio del client e' ben formato
byte=strlen(line); //restituisce iil numero di byte
if (byte<10)
f=0;
// allo stato autenticato modificando la flag a 0 per permettere poi LST, ADD

// cambiare ouput del server
if ((strncmp(line,"LST",3)==0)&&(f==0)) // se è LST e sono in stato autenticato (f uguale a 0)
{
// legge dal messaggio prodotto e Quantità
sscanf(line,"ADD%s:%u\r\n",prodotto,&Q);

// apertura file
FILE *fpt= fopen(nomefile,"r");
// legge dal file il record
while(fscanf(ftp,"%u%s:%u%u",&last, prodotto, &prezzo, &Q)!=EOF)
{// e lo invia al client tramite connfd
Writen(connfd,"%u%s:%u%u\r\n", last, prodotto, prezzo, Q);
}
}

if ((strcmp(line,"ADD\r\n")==0)&&(f==0))
{
sscanf(line,"ADD%s:%u\r\n",prodotto, &Q); // ricopia prodotto e Quantita' dalla linea
prezzo = Find(nomefile, prodotto, Q);
if (prezzo==0)
Writen("%u\r\n",0);
else
Writen("%u\r\n",2);

somma=somma+prezzo;
}

if ((strncmp(line,"BYE\r\n")==0))
{
nsomma= hotnl(somma);
if (f==0)
Writen(connfd,"%u\r\n", nsomma);

Close(connfd);
}

Readline(connfd, line, MAX); // legge la prossima istruzione dal client

} // fine del while del menu' di esecuzione delle istruzioni

} //fine dell if con la fork
else{
Close(connfd);
}
}

exit(0);
}


uint32_t Find(nomefile, *prodotto, Q)
{


FILE *ftp;
int qta =(int)Q;
// apertura file
ftp = fopen(nomefile,"r");

fscanf(ftp,"%s;%d.%d;%d", prod, &prezzoint, &prezzodec, &quantita);
while(ftp!=EOF){
// confronta il record con le richieste del client
if ((strcmp(prod,prodotto)==0)&&(quantita==qta))
return // leggere senza il punto il prezzo dal file




fscanf(ftp,"%s;%d.%d;%d", prodotto, &prezzoint, &prezzodec, &quantita);
}





}
maccette è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
XREAL AURA: gli occhiali XR via cavo con...
E-Plato, 3 milioni per sviluppare Socrat...
Alexa Home Map trasforma la casa in una ...
Due magneti grandi come un seme di sesam...
Il boss di Instagram avverte: la rabbia ...
Nikon 120-300mm f/2.8: moltiplicatore in...
Targhe personalizzate per auto e moto: c...
Redmi K100 ufficiale, con batteria da 10...
GTA 6, nuovo gameplay in South Park: Jas...
I guru dell'IA sono totalmente slegati d...
Diesel: scatta il taglio delle accise, m...
La pubblicità nell'AI Mode delle ricerch...
Mac Studio M5 Ultra al massimo: 512GB di...
Cyberpunk: il sequel potrebbe introdurre...
WhatsApp prepara una nuova sezione Pagam...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v