Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema connessione socket da remoto / NAT

    Salve ragazzi,

    il mio problema è un classico: ho una semplice applicazione client-server. Il server parte e si mette in ascolto su una porta (nella fattispecie 20600). Il cliente parte e si connette al server su quella porta. Il problema è far funzionare tutto raggiungendo il server non tramite l'indirizzo locale 192.168.x.x ma da remoto.

    Ho letto in giro che a fare il lavoro sporco ci pensa il router, a patto di configurare correttamente le impostazioni NAT. In realtà, dovrei aver aperto correttamente le porte (come risulta su siti come http://www.yougetsignal.com/tools/open-ports/ o http://www.canyouseeme.org/), ma nonostante ciò non riesco a connettere il client al server (se indico l'ip pubblico).
    Inoltre ho temporaneamente disabilitato il firewall, sia del router che dell'host, quindi non può essere lui che blocca la connessione...

    C'è qualche altra impostazione che non ho considerato? Qualcuno sa da che può dipendere?

  2. #2
    Moderatore di ADSL e connettività, Reti LAN e Wireless e VoIP L'avatar di fivendra
    Registrato dal
    Jun 2001
    residenza
    Treviso
    Messaggi
    23,939
    banalmente, l'applicazione server permette l'accesso da ip esterni alla rete locale?

  3. #3
    direi di si (almeno, non ho fatto niente per impedirlo):

    codice:
    	int listenfd,connfd,n;
    	struct sockaddr_in servaddr,cliaddr;
    	socklen_t clilen;
    	char mesg[1000];
    	
    	listenfd=socket(PF_INET,SOCK_STREAM,0);
    	
    	bzero(&servaddr,sizeof(servaddr));
    	servaddr.sin_family = AF_INET;
    	servaddr.sin_addr.s_addr = INADDR_ANY;
    	servaddr.sin_port=htons(20600);
    	
    	bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
    	
    	listen(listenfd,5);
    	
    	clilen=sizeof(cliaddr);
    	connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
    				
    	n = (int) recvfrom(connfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&clilen);
    	sendto(connfd,mesg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
    	printf("-------------------------------------------------------\n");
    	mesg[n] = 0;
    	printf("Received the following:\n");
    	printf("%s",mesg);
    	printf("-------------------------------------------------------\n");
    
    	close(connfd);

  4. #4
    Moderatore di ADSL e connettività, Reti LAN e Wireless e VoIP L'avatar di fivendra
    Registrato dal
    Jun 2001
    residenza
    Treviso
    Messaggi
    23,939
    posso chiederti che applicazione è?
    magari c'è un problema anche sul client, provato anche a disabilitare il firewall sul client?

  5. #5
    l'applicazione l'ho scritta io, sono i primi esperimenti sulla programmazione con socket

    server e client girano sulla stessa macchina (quindi il firewall è disabilitato per entrambi).

    Il client è scritto pure da me, però per testare il server generalmente uso direttamente telnet, quindi eventuali problemi nel client non influiscono...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.