anch'io intendevo nel programma
![]()
anch'io intendevo nel programma
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Lo so'...
Ma io intendevo nelle funzioni del programma![]()
PoWered by:
Gentoo 1.5.3 - Kernel 2.6.7
Debian Sid - Kernel 2.6.7 - Bash 3.0
Slackware current - Kernel 2.6.7
ovviamente, bisogna sempre gestire i vari errori:Originariamente inviato da kNemo
Un altra cosa...
Come faccio a sapere se l'utente e' collegato ad internet o meno ???
codice:int e, s; struct hostent *ip; ... ... ... e = WSAStartup(wVersionRequested, &wsaData); if (e != 0 ) { printf("Impossibile trovare la Winsock DLL\n"); system("pause"); return 1; } ... ... ... s = socket(AF_INET, SOCK_STREAM, 0); if (s < 0) { printf("Impossibile creare la Socket\n"); system("pause"); return 1; } ... ... ... ip = gethostbyname("www.pincopallino.net") ; if (! ip) { printf("Indirizzo non valido o mancata cannessione\n"); system("pause"); return 1; } ... ... ... e = connect(s, (struct sockaddr *)&sock, sizeof(sock)) ; if (e < 0) { printf("Impossibile stabilire la connessione\n"); system("pause"); return 1; } ... ... ... e = send(s, msg_enter, strlen(msg_enter) + 1, 0); if (e < 0) { printf("Impossibile inviare la stringa al server\n"); system("pause"); return 1; } ... ... ... e = recv(s, msg_response, 1, 0); if (e < 0) { printf("Nessuna risposta - stringa ricevuta - da parte del server\n"); system("pause"); return 1; } e = shutdown(s, 2); if (e < 0) { printf("Mancata disconnessione con il server\n"); system("pause"); return 1; } ... ... ... e = closesocket(s); if (e < 0) { printf("Impossibile chiudere la socket\n"); system("pause"); return 1; }
...Terrible warlords, good warlords, and an english song
Ho guardato il codice postato da johnny ma (eesendo principiante) non riesco a capire alcuni punti:
Qualcuno potrebbe spiegarmi istruzione per istruzione cosa significa dove ho messo i punti di domanda?
#include <stdio.h>
#include <winsock.h>
int main()
{
struct sockaddr_in sock; //????
struct hostent *ip; //????
char msg_enter[] = "GET /directory/file.html HTTP/1.0\n\n"; // RICHIESTA FILE
char msg_response[] = "\0"; //????
int s;
WORD wVersionRequested; //????
WSADATA wsaData; //????
wVersionRequested = MAKEWORD(2, 2); //????
WSAStartup(wVersionRequested, &wsaData); //????
s = socket(AF_INET, SOCK_STREAM, 0); //????
ip = gethostbyname("www.pincopallino.net"); // INDIRIZZO
memset(&sock, 0, sizeof(sock)); //????
sock.sin_family = AF_INET; //????
sock.sin_port = htons(80); // PORTA
memcpy(&sock.sin_addr, ip->h_addr, ip->h_length); //????
connect(s, (struct sockaddr *)&sock, sizeof(sock)); //????
printf("Inviato al server:\n\n%s\n", msg_enter);
send(s, msg_enter, strlen(msg_enter) + 1, 0); //????
printf("Ricevuto dal server:\n\n");
while(recv(s, msg_response, 1, 0) != 0)
{
printf("%c", msg_response[0]);
Sleep(10);
} //????
shutdown(s, 2); //????
closesocket(s); //????
WSACleanup(); //????
system("pause");
return 0;
}
Se non avete voglia di spiegarmi il codice potreste mandarmi un link che tratta la connessione ad internet e scambio di informazioni (spiegato in modo moooolto elementare x' ci capisco molto poco)
:tongue: :tongue: :tongue:
codice:#include <stdio.h> #include <winsock.h> int main() { struct sockaddr_in sock; //la struttura per il socket struct hostent *ip; //la struttura per l'indirizzo char msg_enter[] = "GET /directory/file.html HTTP/1.0\n\n"; // RICHIESTA FILE char msg_response[] = "\0"; la risposta int s; WORD wVersionRequested; //la versione WSADATA wsaData; //???? wVersionRequested = MAKEWORD(2, 2); //attiva la lib winsock 2.2 WSAStartup(wVersionRequested, &wsaData); //la starta s = socket(AF_INET, SOCK_STREAM, 0); //crea il socket ip = gethostbyname("www.pincopallino.net"); // INDIRIZZO sock.sin_family = AF_INET; // tipo di indirizzo ...... di solito sempre AF_INET sock.sin_port = htons(80); // PORTA memcpy(&sock.sin_addr, ip->h_addr, ip->h_length); //copia l'indirizzo nella struttura socket connect(s, (struct sockaddr *)&sock, sizeof(sock)); //associa al socket s la struttura socket printf("Inviato al server:\n\n%s\n", msg_enter); send(s, msg_enter, strlen(msg_enter) + 1, 0); //invia dati printf("Ricevuto dal server:\n\n"); while(recv(s, msg_response, 1, 0) != 0) { printf("%c", msg_response[0]); Sleep(10); } // chiude il socket shutdown(s, 2); closesocket(s); WSACleanup(); system("pause"); return 0; }
La stupidità umana e l'universo sono infinite.
Della seconda non sono certo(Einstein)
Gnu/Linux User
Qualcuno lo sa' fare per linux...
Io ho fallito la mia missione...![]()
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
su linux è tres facilOriginariamente inviato da nightfall
Qualcuno lo sa' fare per linux...
Io ho fallito la mia missione...![]()
![]()
La stupidità umana e l'universo sono infinite.
Della seconda non sono certo(Einstein)
Gnu/Linux User
Ragazzi se io copio e incollo il codice che avete postato in visual studio e lo compilo mi da 11 errori in fase di link! come mai?
Programmatore in prova
quando si usa l'header <winsock.h> bisogna sempre linkare anche la rispettiva libreria "wsock32.lib"Originariamente inviato da superleoleo
Ragazzi se io copio e incollo il codice che avete postato in visual studio e lo compilo mi da 11 errori in fase di link! come mai?
per fare ciò: menù Project\Setting\LINK
ora nella casella "Object/library modules" aggiungi in coda "wsock32.lib"
ora puoi compilare il progetto.
@nightfall: quel codice è portabilissimo...
credo che sia sufficiente sostituire soltanto l'header <winsock.h>
con i relativi header sulle socket che offre Linux (e forse poco altro)...
appena ho tempo provo a fare il porting.
...Terrible warlords, good warlords, and an english song