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

[SFML Network] Program się wyłącza

Ostatnio zmodyfikowano 2012-10-14 20:39
Autor Wiadomość
ridic14
Temat założony przez niniejszego użytkownika
[SFML Network] Program się wyłącza
» 2012-10-14 16:10:19
Mam pewien problem gdyż eksperymentuję z network'iem w celu utworzenia komunikatora...

(GUI już mam... Podgląd:http://imageshack.us/a/img202/5475/filetr.png http://www.sendspace.pl/file/e30671c347436252e3372d0



Chodzi o to czy sfml network ma jakieś funkcje które wysyłają/czekają na odpowiedź nie zatrzymując programu...

i dlaczego po pierwszym przejściu pętli te dwie appki się zamykają: z/w

C/C++
#include <SFML/Network.hpp>
#include <iostream>
int main()
{
   
    sf::IpAddress a8 = sf::IpAddress::getPublicAddress();
    sf::TcpSocket socket;
    socket.connect( a8, 55001 );
   
    bool exit = false;
    while( exit == true )
    {
        // Send a message to the connected host
        std::string message;
        std::cin >> message;
        socket.send( message.c_str(), message.size() + 1 );
       
        // Receive an answer from the server
        char buffer[ 1024 ];
        std::size_t received = 0;
        socket.receive( buffer, sizeof( buffer ), received );
        std::cout << "The server said: " << buffer << std::endl;
       
    }
    return 0;
   
}
C/C++
#include <SFML/Network.hpp>
#include <iostream>
int main()
{
   
    // Create a listener to wait for incoming connections on port 55001
    sf::TcpListener listener;
    listener.listen( 55001 );
   
    // Wait for a connection
    sf::TcpSocket socket;
    listener.accept( socket );
    std::cout << "New client connected: " << socket.getRemoteAddress() << std::endl;
    bool exit = false;
    while( exit == true )
    {
        // Receive a message from the client
        char buffer[ 1024 ];
        std::size_t received = 0;
        socket.receive( buffer, sizeof( buffer ), received );
        std::cout << "The client said: " << buffer << std::endl;
       
        // Send an answer
        std::string message = "Welcome, client";
        std::cin >> message;
        if( message == "exit" ) exit = true;
       
        socket.send( message.c_str(), message.size() + 1 );
    }
    return 0;
   
}

P-66824
Mrovqa
» 2012-10-14 16:53:42
Chodzi o to czy sfml network ma jakieś funkcje które wysyłają/czekają na odpowiedź nie zatrzymując programu...
Poczytaj sobie o wątkach. Na Twoje szczęście SFML ma je zaimplementowane ;)

i dlaczego po pierwszym przejściu pętli te dwie appki się zamykają: z/w
Można prosić o więcej info? Jak się zamykają? Run-time error czy normalnie?
P-66825
ridic14
Temat założony przez niniejszego użytkownika
» 2012-10-14 17:23:15
Serwer po wysłaniu odpowiedzi wyłącza się tak po prostu
P-66829
ridic14
Temat założony przez niniejszego użytkownika
» 2012-10-14 20:39:31
ciężko te wątki ogarnąć... tylko po to żeby zrobić pętle z wysyłaniem i żeby odbierać bez zatrzymania programu


edit jedyne co znalazłem to:

sf::Thread thre;

i
C/C++
/// Task task;
/// sf::Thread thread(&Task::run, &task);
/// thread.launch(); // start the thread (internally calls task.run())

ali i tak mi to nie pomaga
P-66838
« 1 »
  Strona 1 z 1