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

[SFML 2.1] Network

Ostatnio zmodyfikowano 2013-08-19 20:15
Autor Wiadomość
Bimbol
Temat założony przez niniejszego użytkownika
[SFML 2.1] Network
» 2013-08-19 16:10:27
Witam, próbuję napisać prosty Czat w konsoli.
Co prawda działa, użytkownik może się połączyć z serwerem i wypisać jedną wiadomość.
Następne wypisane wiadomości już nie docierają do serwera.

Jako, że jestem w tym zielony nie mam pojęcia dlaczego tak się dzieje.

Serwer:
C/C++
#include <SFML/Network.hpp>
#include <string>
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    sf::TcpListener listener;
   
    char buffer[ 2000 ];
    size_t received;
   
    unsigned port;
    unsigned slot;
    string server_msg = "Welcome to chat!";
   
    cout << "Enter the port: ";
    cin >> port;
   
    system( "cls" );
    cout << "Welcome, type help to show command list" << endl;
   
    listener.listen( port );
    sf::TcpSocket socket;
   
    while( true )
    {
        if( listener.accept( socket ) == sf::Socket::Done )
        {
            cout << "<< removed >>" << endl;
            socket.receive( buffer, sizeof( buffer ), received );
            if( received > 0 )
            {
                cout << buffer;
                cout << " join to the chat by IP: " << socket.getRemoteAddress() << endl;
                socket.send( server_msg.c_str(), server_msg.length() + 1 );
            }
        }
       
        socket.receive( buffer, sizeof( buffer ), received );
        cout << buffer << endl;
    }
   
    return EXIT_SUCCESS;
}

Klient:
C/C++
#include <SFML/Network.hpp>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    sf::IpAddress ip;
    sf::TcpSocket socket;
   
    char buffer[ 2000 ];
    size_t received;
   
    string ip_adress;
    unsigned port;
    string name;
   
    cout << "Enter the ip adress: ";
    cin >> ip_adress;
   
    cout << "Enter the port: ";
    cin >> port;
   
    cout << "Enter name: ";
    cin >> name;
   
    socket.connect( ip_adress, port );
   
    socket.send( name.c_str(), name.length() + 1 );
    socket.receive( buffer, sizeof( buffer ), received );
   
    cout << buffer << endl;
   
    string user_msg = "";
    cin.clear();
   
    while( true )
    {
        cout << name << ": ";
        cin >> user_msg;
        socket.send( user_msg.c_str(), user_msg.length() + 1 );
    }
   
    return EXIT_SUCCESS;
}

Dziękuję za pomoc.
P-90539
megatron
» 2013-08-19 16:39:02
cout << "<< removed >>" << endl;
z takim podejściem to może być ciężko ;)

#@#EDIT#@#

Nie blokujesz listener'a
P-90548
Bimbol
Temat założony przez niniejszego użytkownika
» 2013-08-19 20:15:01
Cóż nie sądziłem, że zostało to w kodzie :P
Jednak zdenerwowała mnie taki mały błąd.

Dziękuję za odpowiedź.
Wszystko działa.
P-90561
« 1 »
  Strona 1 z 1