PDA

Visualizza la versione completa : [C] Interazione TCP Client/Server


mark9
22-03-2015, 13:18
Ciao a tutti, in questa prima parte di codice in c per costruire una semplice interazione tra un client e un server sono arrivato a un punto in cui ho un paio di errori che non capisco:


#include <winsock.h>

#include <stdio.h>
#include <stdlib.h> // for atoi()
#define PROTOPORT 5193 //default protocol port number
#define QLEN 6 // size of request queue

void ErrorHandler (char *errorMessage) {
printf (errorMessage);
}

void ClearWinSock() {
WSACleanup ();
}


int main (int argc, char *argv[]) {
int port;
if (argc>1) {
port = atoi (argv[1]); //if argument specified convert argument to binary
}
else
port = PROTOPORT; //use dafault port number
if (port < 0) {
printf ("bad port number %s \n", argv[1]);
return 0;
}


WSADATA wsaData;
int iResult = WSAStartup (MAKEWORD(2,2), &wsaData);

if (iResult != 0) {
ErrorHandler ("Error at WSAStartup()\n");
return 0;
}

In particolare nell'ultimo pezzo:


WSADATA wsaData;
int iResult = WSAStartup (MAKEWORD(2,2), &wsaData);

if (iResult != 0) {
ErrorHandler ("Error at WSAStartup()\n");
return 0;
}

Sull'if ricevo "syntax error"...che non comprendo purtroppo.
Sulla funzione ErrorHandler ricevo "control reaches end of non-void function" che da quello che ho capito significa che si aspetta un valore, mentre la funzione è void. Ma non capisco che valore...

mark9
22-03-2015, 14:45
Dunque, sull'if ho risolto perchè avevo dimenticato la chiusura della } di tutto il main.
Resta l'errore sulla funzione...

oregon
22-03-2015, 15:00
Ma dopo la prima correzione hai ricompilato?

mark9
22-03-2015, 15:33
Ma dopo la prima correzione hai ricompilato?

Sì...rimane quell'errore e "expected declaration or statement at the end of input"...

oregon
22-03-2015, 15:49
Posta nuovamente il codice intero e corretto.

mark9
22-03-2015, 17:11
#include <winsock.h>

#include <stdio.h>
#include <stdlib.h> // for atoi()
#define PROTOPORT 5193 //default protocol port number
#define QLEN 6 // size of request queue

void ErrorHandler (char *errorMessage) {
printf (errorMessage);
}

void ClearWinSock() {
WSACleanup ();
}


int main (int argc, char *argv[]) {
int port;
if (argc>1) {
port = atoi (argv[1]); //if argument specified convert argument to binary
}
else
port = PROTOPORT; //use dafault port number
if (port < 0) {
printf ("bad port number %s \n", argv[1]);
return 0;
}


WSADATA wsaData;
int iResult = WSAStartup (MAKEWORD(2,2), &wsaData);

if (iResult != 0) {
ErrorHandler ("Error at WSAStartup()\n");
return 0;
}

}

oregon
22-03-2015, 17:35
Compilando questo codice non ho errori.

mark9
22-03-2015, 18:00
Faccio build all e mi esce ora solo un triangolino giallo del warning...messaggio sempre lo stesso: control reaches end of non-void function.
Provo ad andare avanti col programma..

oregon
22-03-2015, 18:03
Alla fine, tra le due ultime parentesi, potresti aggiungere un return 0



}
return 0;
}


Ma con cosa stai compilando?

mark9
22-03-2015, 18:48
Eclipse + minigw.

Ho completato il programma ed ho un bind() failed.

Tu intendi di mettere quel return alla fine di tutto il programma o dove avevo l'errore? Perchè dove avevo l'errore ho provato a farlo e non cambiava...ora il bello è che terminato il programma quell'errore non viene più segnalato.

Loading