Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa server applikacijom

[es] :: C/C++ programiranje :: problem sa server applikacijom

[ Pregleda: 2230 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ACE_theScorpion
ACE Scorpion

Član broj: 72581
Poruke: 3
*.PPPoE-2499.sa.bih.net.ba.



Profil

icon problem sa server applikacijom28.09.2006. u 05:44 - pre 213 meseci
napravio sam malu server aplikaciju i klijent za za nju..eh sad,kada se klijentom konektujem na server preko localhosta(127.0.0.1) sve normalno radi,al kada pokusam da se konektujem preko svoje ip adrese ne moze da se konektuje..gasio sam firewall-e,pokusao preko telnet-a da se konektujem al uzalud..ima li ko ideju sta bi moglo biti???..takodje,na taj moj mali server sa svog kompa se ne mogu konektovati ni kad je na necijem drugom kompu..
 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 193
*.ns.ac.yu.



Profil

icon Re: problem sa server applikacijom28.09.2006. u 12:09 - pre 213 meseci
daj nam malo koda...daj nam malo soli... moras malo vise informacija, kod, os, i sl. za ovakav post it treba sai-baba
ja sam panker sa diplomom kod moje mame...
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: problem sa server applikacijom28.09.2006. u 12:13 - pre 213 meseci
Jesi odblokirao port u firewalu? Ako imaš WinXP SP2 onda bi ti se trebalo pojaviti upozorenje kada startaš server aplikaciju. Tada klikneš UNBLOCK. Ako nema, provjeri ručno u firewall postavkama da li je taj port otvoren na tom stroju gdje pokrećeš server.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.dynamic.sbb.co.yu.



Profil

icon Re: problem sa server applikacijom28.09.2006. u 15:04 - pre 213 meseci
Da li si programe testirao u lokalnoj mrezi ili preko interneta?
Ako si preko interneta da li imas javne adrese (staticke ili dinamicke), da li su masine iza routera i da li je router konfigurisan da podrzava "virtuelne servere"?

 
Odgovor na temu

ACE_theScorpion
ACE Scorpion

Član broj: 72581
Poruke: 3
*.PPPoE-3625.sa.bih.net.ba.



Profil

icon Re: problem sa server applikacijom28.09.2006. u 16:26 - pre 213 meseci
ovako..os mi je windows xp pro SP2..za firewall koristim zonealarm a i windows firewall mi je ukljucen..provjeravao sam da li applikacija radi kada je firewall ugasen al ista stvar..server se bind-uje na port i ceka al se ne moze konektovati na njega preko interneta..trenutno sam na adsl-u..hmmm...sta josh..evo kod servera iz msdn-a koji takodje ima isti problem,mislim ja imam problem sa kodom :D :

Code:

#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define DEFAULT_PORT 5001
#define DEFAULT_PROTO SOCK_STREAM 

void Usage(char *progname) {
    fprintf(stderr,"Usage\n%s -p [protocol] -e [endpoint] -i [interface]\n",
        progname);
    fprintf(stderr,"Where:\n\tprotocol is one of TCP or UDP\n");
    fprintf(stderr,"\tendpoint is the port to listen on\n");
    fprintf(stderr,"\tinterface is the ipaddr (in dotted decimal notation)");
    fprintf(stderr," to bind to\n");
    fprintf(stderr,"Defaults are TCP,5001 and INADDR_ANY\n");
    WSACleanup();
    exit(1);
}
int main(int argc, char **argv) {

    char Buffer[128];
    char *interface= NULL;
    unsigned short port=DEFAULT_PORT;
    int retval;
    int fromlen;
    int i;
    int socket_type = DEFAULT_PROTO;
    struct sockaddr_in local, from;
    WSADATA wsaData;
    SOCKET listen_socket, msgsock;

    
    if (argc >1) {
        for(i=1;i <argc;i++) {
            if ( (argv[i][0] == '-') || (argv[i][0] == '/') ) {
                switch(tolower(argv[i][1])) {
                    case 'p':
                        if (!stricmp(argv[i+1], "TCP") )
                            socket_type = SOCK_STREAM;
                        else if (!stricmp(argv[i+1], "UDP") )
                            socket_type = SOCK_DGRAM;
                        else
                            Usage(argv[0]);
                        i++;
                        break;

                    case 'i':
                        interface = argv[++i];
                        break;
                    case 'e':
                        port = atoi(argv[++i]);
                        break;
                    default:
                        Usage(argv[0]);
                        break;
                }
            }
            else
                Usage(argv[0]);
        }
    }
    
    if ((retval = WSAStartup(0x202,&wsaData)) != 0) {
        fprintf(stderr,"WSAStartup failed with error %d\n",retval);
        WSACleanup();
        return -1;
    }
    
    if (port == 0){
        Usage(argv[0]);
    }

    local.sin_family = AF_INET;
    local.sin_addr.s_addr = (!interface)?INADDR_ANY:inet_addr(interface); 

    local.sin_port = htons(port);

    listen_socket = socket(AF_INET, socket_type,0); 
    
    if (listen_socket == INVALID_SOCKET){
        fprintf(stderr,"socket() failed with error %d\n",WSAGetLastError());
        WSACleanup();
        return -1;
    }


    if (bind(listen_socket,(struct sockaddr*)&local,sizeof(local) ) 
        == SOCKET_ERROR) {
        fprintf(stderr,"bind() failed with error %d\n",WSAGetLastError());
        WSACleanup();
        return -1;
    }



    if (socket_type != SOCK_DGRAM) {
        if (listen(listen_socket,5) == SOCKET_ERROR) {
            fprintf(stderr,"listen() failed with error %d\n",WSAGetLastError());
            WSACleanup();
            return -1;
        }
    }
    printf("%s: 'Listening' on port %d, protocol %s\n",argv[0],port,
        (socket_type == SOCK_STREAM)?"TCP":"UDP");
    while(1) {
        fromlen =sizeof(from);

        if (socket_type != SOCK_DGRAM) {
            msgsock = accept(listen_socket,(struct sockaddr*)&from, &fromlen);
            if (msgsock == INVALID_SOCKET) {
                fprintf(stderr,"accept() error %d\n",WSAGetLastError());
                WSACleanup();
                return -1;
            }
            printf("accepted connection from %s, port %d\n", 
                        inet_ntoa(from.sin_addr),
                        htons(from.sin_port)) ;
            
        }
        else
            msgsock = listen_socket;


        if (socket_type != SOCK_DGRAM)
            retval = recv(msgsock,Buffer,sizeof (Buffer),0 );
        else {
            retval = recvfrom(msgsock,Buffer,sizeof (Buffer),0,
                (struct sockaddr *)&from,&fromlen);
            printf("Received datagram from %s\n",inet_ntoa(from.sin_addr));
        }
            
        if (retval == SOCKET_ERROR) {
            fprintf(stderr,"recv() failed: error %d\n",WSAGetLastError());
            closesocket(msgsock);
            continue;
        }
        if (retval == 0) {
            printf("Client closed connection\n");
            closesocket(msgsock);
            continue;
        }
        printf("Received %d bytes, data [%s] from client\n",retval,Buffer);

        printf("Echoing same data back to client\n");
        if (socket_type != SOCK_DGRAM)
            retval = send(msgsock,Buffer,sizeof(Buffer),0);
        else
            retval = sendto(msgsock,Buffer,sizeof (Buffer),0,
                (struct sockaddr *)&from,fromlen);
        if (retval == SOCKET_ERROR) {
            fprintf(stderr,"send() failed: error %d\n",WSAGetLastError());
        }
        if (socket_type != SOCK_DGRAM){
            printf("Terminating connection\n");
            closesocket(msgsock);
        }
        else 
            printf("UDP server looping back for more requests\n");
        continue;
    }
}


[Ovu poruku je menjao X Files dana 28.09.2006. u 17:37 GMT+1]
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: problem sa server applikacijom28.09.2006. u 22:36 - pre 213 meseci
Kazes da si na adsl-u. Neznam kako je to uradjeno kod vas u BiH, ali ovde (u Beogradu) postoji dva nacina povezivanja preko ADSL-a:
- Dinamicka javna adresa (preko DHCP-a) -> username/ip@isp
- Lokalna adresa ISP-a -> username@isp

Ako imas dinamicku javnu adresu onda moras da znas koja ti je adresa dodeljena i da to uneses u klijentski program. Drugi nacin je da registrujes domen (npr. preko www.dyndns.org) i da koristis programcic koji ce da detektuje promenu ip adrese u obavesti DNS o promeni. Na ovaj nacin mozes da pristupis svom serveru preko domena umesto preko IP adrese. Ako imas kombinaciju router+adsl modem onda router treba da podesis da propusta zahteve za konekciju.

Ako imas lokalnu adresu onda nema sansi da neko pristupi tvom serveru sa interneta. U stvari moze, ali ISP mora da ti to dozvoli.

Da li ti prog radi u LAN-u?

 
Odgovor na temu

[es] :: C/C++ programiranje :: problem sa server applikacijom

[ Pregleda: 2230 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.