Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    client_server

    ciao a tutti..

    è la prima volta che scrivo in questo forum...

    sto usando i socket in c utilizzando visual studio...

    ma non riesco a far connettere il client col server..

    la connect mi fallisce... come posso fare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Senza sapere nulla del codice, né dell'errore in particolare, come si fa a rispondere?

    Ma probabilmente si tratta di questa stessa problematica

    http://www.pierotofy.it/pages/extras...client_server/

    che era già molto confusa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    io non ho problemi di quel tipo..fino a li è tt ok ...

    ecco il mio codice..del client

    codice:
    int main(int argc, char * argv[])
    {
    	SOCKET conn_s;
    	short int port;
    	struct sockaddr_in server;
    	char buffer[MAX];
    	char *szAddress;
    	char *szPort;
    	char *endPtr;
    	struct hostent *he;
    	char choise;
    	u_long nRemoteAddr;
    	WSADATA wsaData;
    
    	he=NULL;
    	puts(" PRENOTAZIONE CINEMA CLIENT");
    	//interpretazione riga di comando
    
    	ParseCmdLine(argc,argv,&szPort,&szAddress);
    
    
    	//creazione del socket
    
    	port= strtol(szPort,&endPtr,0);
    	if(*endPtr)
    	{
    			printf("client:porta non riconosciuta \n");
    			system("PAUSE");
    			exit(EXIT_FAILURE);
    	}
    
    	if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)
    	{
    			printf("errore in WSA startup");
    			exit(EXIT_FAILURE);
    	}
    
    	if((conn_s=socket(AF_INET,SOCK_STREAM,0))<0)
    		{
    			fprintf(stderr,"client :errore socket");
    			system("PAUSE");
    			exit(EXIT_FAILURE);
    		}
    
    	// Vuotiamo la struttura server e riempiamo i campi necessari */
    
    	memset(&server,0,sizeof(server));
    	server.sin_family=AF_INET;
    	server.sin_port=htons(port);
    
    	//connessione al server
    
    	/* Impostazione dell’indirizzo IP del server remoto */
    
    	nRemoteAddr = inet_addr(szAddress);
    	if (nRemoteAddr == INADDR_NONE)
    	{
    		printf("client: indirizzo IP non valido.\n");
    		if ((he=gethostbyname(szAddress)) == 0)	
    		{
    			printf("connessione fallita.\n");
    			system("PAUSE");
    			exit(EXIT_FAILURE);
    		}
    	printf("connessione riuscita.\n\n");
    	nRemoteAddr = *((u_long *)he->h_addr_list[0]);
    	}
    	server.sin_addr.s_addr = nRemoteAddr;
    	//connect
    
    	if(connect(conn_s,(struct sockaddr *) &server,sizeof(server))==SOCKET_ERROR)
    	{
    		printf("client: errore durante la connect");
    		exit(EXIT_FAILURE);
    	}
    	
    k: while((choise=comunicazione(conn_s))=='r')
       {
    		printf("client:reinserire numero giusto \n");
       }
    	
       switch (choise)
       {
       case '0': exit(0);
    	   break;
       case '1':visualizzamappa(conn_s);
    	   break;
       case '2':
    	   char postistr[TEXT_LENGTH];
    	   int numposti;
    	   puts("inserisciil numero di posti da prenotare");
    	   errore=(scanf("%s",postistr));
    	   if(errore<0)
    	   {	
    		   if(WSAGetLastError()==WSAEINTR)
    							{
    							printf("errore nella scanf");
    							SendMessage(HWND_BROADCAST,my_mex_type,0,0);
    							exit(-1);// uscita
    							}
    	   }
    	   if(verificastringa(postistr)!=-1)
    	   {
    			numposti=atoi(postistr);
    	   }
    	   else numposti=-1;
    	   if(numposti<=0|| numposti>127)
    	   {
    			puts("Errore:	numero posti inserito non valido.al max è possibile prenotare 127 posti,SALA PERMETTENDO");
    	   }
    	   else 
    	   leggiposti( numposti,conn_s);
    	   break;
       case '3':disdici(conn_s);
    	   break;
       default: break;
       }
    
       printf("client:proseguire con un altra operazione? Y per si altro per no: ");
    
       fgets(buffer,MAX,stdin);
       if(buffer[0]=='y' || buffer [0]=='Y')
       {
    		if(send(conn_s,"y",sizeof(buffer),0)==-1)
    		{
    				if(WSAGetLastError()==WSAEHOSTDOWN)
    				{
    						printf("client:errore nella send");
    						SendMessage(HWND_BROADCAST,my_mex_type,0,0);
    						system("PAUSE");
    						exit(-1);
    				}
    		}
    		system("PAUSE");
    		goto k;
       }
       system("PAUSE");
       WSACleanup();
       }
    e del server :

    codice:
    ParseCmdLine(argc,argv,&endPtr);
    
    	//creazione socket
    
    	/*strtol convert un char in un long int */
    
    	port= strtol(endPtr,&endPtr,0);
    
    	if(*endPtr)
    	{
    			fprintf(stderr,"server: porta non riconosciuta");
    			exit(EXIT_FAILURE);
    	}
    
    	printf("server: in ascolto sulla porta %d \n", port);
    
    	/*wsStartup inizializza l'utilizzazione delle Windows Socket */
    
    	if( WSAStartup (MAKEWORD (1,1) , &wsaData) !=0)
    	{
    		printf("errore in WSA startup");
    			exit(EXIT_FAILURE);
    	}
    
    	/* creazione socket*/
    
    	if((list_s=socket (AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
    	{
    			fprintf(stderr,"server:errore apertura socket"); //flusso di errore è la destinazione per per i messaggi di errore
    			exit(EXIT_FAILURE);
    	}
    
    	//bind e listen su socket
    
    	/*memset setta i primi n bytes della locazione puntata dal puntatore passato (nel nostro caso i bytes sono sizeof(buffer) e il puntatore &server) */
    
    	memset(&server,0,sizeof(server));
    
    	server.sin_family=AF_INET;
    	server.sin_addr.s_addr=htonl(INADDR_ANY);
    	server.sin_port=htons(port);
    
    	//effettua la bind sull'indirizzo e la porta ora assegnate
    
    	if(bind(list_s,(struct sockaddr *)&server, sizeof(server))==SOCKET_ERROR)
    	{
    			fprintf(stderr,"server: errore nella bind");
    			exit(EXIT_FAILURE);
    	}
    
    	//mette la socket in ascolto tramite la listen
    
    	if(listen(list_s, LISTENQ)==SOCKET_ERROR)
    	{
    		fprintf(stderr,"server:errore nella listen");
    		exit(EXIT_FAILURE);
    	}
    
    	//creazione file
    
    	file =CreateFile((LPCWSTR)"codici",GENERIC_READ,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Moderazione

    Il titolo della discussione deve essere conforme a quanto specificato nel Regolamento interno: deve, quindi, essere chiaro, dare un'idea del contenuto e contenere l'indicazione del linguaggio usato. L'ho sistemato io.

    Il codice va postato all'interno degli appositi tag CODE (sempre specificato nel regolamento linkato), in modo da mantenerne l'indentazione e la formattazione. Anche questo l'ho sistemato io.

    Prendi visione del regolamento che ho linkato.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da claudia_90
    io non ho problemi di quel tipo..fino a li è tt ok ...
    Che vuol dire? (per favore, non usare abbreviazioni ...)

    ecco il mio codice..del client
    E quindi? Il problema qual è ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    ok scusami

  7. #7
    che quando nel prompt lancio il server tutto ok ...

    invece il client mi stampa

    il messaggio di errore che ho nella connect
    e cioè

    client: errore durante la connect...

    e non capisco perche la connessione mi fallisce...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E come lanci il server? Come lanci il client?

    Fornisci *tutto* quello che serve per poter dare una risposta, evitando di doverne fare altre ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    apre due console diverse una per il server e una per il client

    il server dopo fare il percorso che occorre ..
    lo invoco semplicemnte server.exe

    per il socket ho
    socket.exe -a 127.0.0.1 -p 80

    poiche indirizzo e porta vengono letti dai parametri di riga di comando

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da claudia_90
    lo invoco semplicemnte server.exe
    E su quale indirizzo/port ascolta il server?

    Dal codice sembra che anche il server sia impostato tramite parametri sulla linea di comando.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.