Cuai raga ho questo codice che serve a creare un socket server.
Parte, ascolta, non appena gli arriva un messaggio lo riceve e poi mi da il messaggio "Premere un tasto per continuare..." io premo e si chiude... ma perchè? come si fa a lasciarlo li in loop?
Codice PHP:
#include <stdio.h>
#include <winsock.h>
#include <string.h>
int main(int argc, char *argv[]){
SOCKET listenSocket;
SOCKET remoteSocket;
SOCKADDR_IN Server_addr;
SOCKADDR_IN Client_addr;
int sin_size;
short port=4000;
char indirizzo[]="127.0.0.1";;
char buffer[256];
int wsastartup;
int ls_result;
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
wsastartup = WSAStartup(wVersionRequested, &wsaData);
if (wsastartup != NO_ERROR) printf("Error WSAStartup()\n");
/* Creazione della Socket che si porrà in ascolto di richieste del Client*/
listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listenSocket < 0)
printf("Socket error!\n");
else printf("Server Listenting...\n");
/* Effettua la bind sull’indirizzo e porta ora specificati */
Server_addr.sin_family = AF_INET;
Server_addr.sin_addr.s_addr = inet_addr(indirizzo);
Server_addr.sin_port = htons(port);
if (bind(listenSocket,(LPSOCKADDR)&Server_addr,sizeof(struct sockaddr)) < 0)
printf("Server: Bind error.\n");
/* La socket si pone in "ascolto" tramite la listen() */
ls_result = listen(listenSocket, SOMAXCONN);
if (ls_result < 0) printf("Server: Listen error.\n");
else printf("Socket Listening...\n");
/* La socket accetta la richiesta di connessione del Client */
sin_size = sizeof(struct sockaddr_in);
remoteSocket = accept(listenSocket, (struct sockaddr *)&Client_addr,&sin_size);
printf("Accettata Connessione con Client: %s\n",inet_ntoa(Client_addr.sin_addr));
/* Il Server accetta il messaggio dal Client */
recv(remoteSocket, buffer, sizeof(buffer), 0);
printf("Messaggio Arrivato: %s \n", buffer);
printf("Chiudo il Server");
close(remoteSocket);
WSACleanup();
system("pause");
return 0;
}
Ho provato anche ad eliminare le utlime 5 linee di codice, con il solo risultato che non mi da il messaggio "Premere un tasto per continuare..." ma si chiude lo stesso... bhoooo