Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Serwer nie akceptuje połączenia

Ostatnio zmodyfikowano 2015-04-19 14:15
Autor Wiadomość
JMII89
Temat założony przez niniejszego użytkownika
Serwer nie akceptuje połączenia
» 2015-04-01 20:08:34
Witam,
mam pewien problem . Otóż chodzi o to , że serwer nie akceptuje połączenia . Mam 2 programy które używają tego samego kodu aby oczekiwać na połączenia od clienta . Jednak mają inny port . Jeden program ma port 4004 a drugi 1337 więc nie rozumiem dlaczego to nie działa .

C/C++
void TServer::Start_Server()
{
   
    int clients = 0;
    SOCKET Client[ MAX_USERS ];
   
    TClient client;
   
    WSAData WSA;
   
    std::cout << "Initializing WSA " << std::endl;
   
    int result = WSAStartup( MAKEWORD( 2, 1 ), & WSA );
   
    if( result )
    {
        std::cout << "WSA Startup failed ! " << std::endl;
        Sleep( 3000 );
        exit( 0 );
    }
   
    SOCKET Listen = socket( AF_INET, SOCK_STREAM, 0 );
    SOCKET Connect = socket( AF_INET, SOCK_STREAM, 0 );
   
    SOCKADDR_IN Server;
   
    Server.sin_addr.s_addr = inet_addr( ip.c_str() );
    Server.sin_family = AF_INET;
    Server.sin_port = htons( port );
   
    result = bind( Listen,( SOCKADDR * ) & Server, sizeof( Server ) );
   
    std::cout << "Trying to bind " << std::endl;
   
    if( result )
    {
        std::cout << "Failed to bind ! " << std::endl;
        Sleep( 3000 );
        exit( 0 );
    }
   
    result = listen( Listen, SOMAXCONN );
   
    std::cout << "Trying to listen " << std::endl;
   
    if( result )
    {
        std::cout << "Failed to listen " << std::endl;
        Sleep( 3000 );
        exit( 0 );
    }
   
    int size = sizeof( Server );
   
    std::cout << "Server connected ! " << std::endl;
   
    while( true )
    {
        Client[ clients ] = accept( Listen,( SOCKADDR * ) & Server, & size );
        std::cout << "Connection accepted from : " << inet_ntoa( Server.sin_addr ) << std::endl;
        client.ClientConnection( Client, clients );
        clients++;
    }
   
    WSACleanup();
}

Ta pętla nigdy się nie wykonuje. Czy może to być spowodowane tym , że pierwszy program coś blokuje ? Bo ten pierwszy program działa i akceptuje połączenia a ten już nie.
P-129837
JMII89
Temat założony przez niniejszego użytkownika
» 2015-04-01 21:16:04
Już wiem chyba dlaczego tak się dzieje . Bo nie używam wątków . Ale mam pytanie . Czy da się za pomocą _beginthread jakoś wysłać dwa argumenty do funkcji ? 
_beginthread(( void( __cdecl * )( void * ) ) client.ClientConnection, ?? );
 
P-129849
C-Objective
» 2015-04-04 10:54:15
Spróbuj użyć tych samych portów, natomiast jak chcesz to mogę ci podesłać mój opensource komunikator internetowy (Borland C++ 6).
Tego samego kodu? To jak ma akceptować, jak to są dwa takie same programy
P-130066
JMII89
Temat założony przez niniejszego użytkownika
» 2015-04-06 17:42:08
2 programy używają takiego samego kodu tylko do połączenia a do innych rzeczy innego a portów nie moge zmienić bo takie muszą być.
P-130283
JMII89
Temat założony przez niniejszego użytkownika
» 2015-04-13 21:40:09
Refresh bo nie rozumiem dlaczego nie działa.
P-130853
DejaVu
» 2015-04-15 19:26:03
Programy nie mogą mieć róznych portów. Oba programy powinny łączyć się na określonym porcie. Powinieneś w aplikacji określić port na którym ma odbywać się komunikacja, a nie pozwalać wybierać aplikacji losowy port, który nie jest jeszcze przez żadną aplikację używany.
P-130940
JMII89
Temat założony przez niniejszego użytkownika
» 2015-04-15 21:25:27
On nie jest w żaden sposób losowy . Port jest wczytywany z pliku ini . Pozatym to jest login server i game server do gry.
P-130953
DejaVu
» 2015-04-15 22:22:55
to napisz najprostszy mozliwy przyklad klient/serwer w oparciu o tcp. analizowanie kodu spagetti w polaczeniu z socketami winapi jest raczej zmudne i trzeba by bylo doczytac dokumentacje kazdej funkcji.
P-130961
« 1 » 2
  Strona 1 z 2 Następna strona