Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
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


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Blue Origin potrebbe realizzare il lande...
Artemis II: il prossimo Wet Dress Rehear...
Il nuovo HONOR 600 sta arrivando e avr&a...
La crisi delle memorie non coinvolger&ag...
Windows domina su Steam, ma molti utenti...
Per non incorrere in nuovi aumenti delle...
Cubi Z AI 8M visto da vicino, un mini-PC...
Datacenter nello Spazio, affascinante ma...
Social e minori, Butti apre al dibattito...
Tutte le offerte Amazon del weekend, sol...
Amazon spinge sull'usato garantito: 10% ...
TikTok rischia una maxi-multa in Europa:...
Bose su Amazon: QuietComfort SC over ear...
Scope elettriche super accessoriate in o...
Umidità e muffa addio: questo deu...
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: 18:02.


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