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

Czy jest jakaś zmienna/klasa podobna do cout / qDebug() ?

Ostatnio zmodyfikowano 2015-04-27 21:12
Autor Wiadomość
alien1983
Temat założony przez niniejszego użytkownika
Czy jest jakaś zmienna/klasa podobna do cout / qDebug() ?
» 2015-04-27 05:07:23
Witam,
czy jest jakiś typ zmiennej co zachowuje się jak cout lub qDeug() ?
Ponieważ chciałem zapisać do stringa adres obiektu (klasy)

string op = &p2Socket;

i wywala błąd :  conversion from 'QWebSocket**' to non-scalar type 'std::string {aka std::basic_string<char>}' requested
          string op = &p2Socket;
                       ^
natomiast cout (lub) qDebug() << &p2Socket;

Działa bezproblemowo. Może ktoś wytłumaczyć o co w tym chodzi, że cout jest tak że tak powiem "user friendly" ??
P-131469
darko202
» 2015-04-27 08:02:36
cout http://www.cplusplus.com​/reference/iostream/cout/

Object of class ostream that represents the standard output stream oriented to narrow characters (of type char).

Obiekt klasy ostream - reprezentuje standardowy  zorientowany strumień znaków (typu char ).
stąd obserwowane przez Ciebie zachowanie

qDebug podobnie
The QDebug class provides an output stream for debugging information.

QDebug is used whenever the developer needs to write out debugging or tracing information to a device, file, string or console.
 


operacja
string op = &p2Socket;
jest przypisaniem obiektu klasy 'QWebSocket**' do obiektu klasy string
stąd masz właściwy komunikat


dziwne że do stringa próbujesz przypisać wskaźnik, a nawet prawdopodobnie referencje na  wskaźnik.
przypuszczam, ze że właściwsze byłoby  *p2Socket lub (string)*p2Socket
choć nie wiedząc co chcesz osiągnąć trudno to rozstrzygnąć.

P-131470
Monika90
» 2015-04-27 10:37:48
ostringstream do tego służy
P-131479
alien1983
Temat założony przez niniejszego użytkownika
» 2015-04-27 16:13:44
Jak mam taką klasę (websocket): QWebSocket *p2Socket , chodziło mi o pobranie jakiegoś identyfikatora połączenia aby w czasie trwania sesji można było coś wysłać do klienta (np. do przeglądarki) i wtedy muszę znać adres p2Socket aby się odwołać do konkretnego połączenia.

Chyba, że macie lepszy pomysł? jak to rozwiązać
P-131503
pekfos
» 2015-04-27 17:09:04
jak to rozwiązać
Ale co..? W gruncie rzeczy napisałeś, że masz adres i chcesz czegoś (?) by poznać ten adres - co nie ma żadnego sensu. Na samym wstępie chciałeś ten adres zapisywać jako tekst w stringu, co również nie wydaje się mieć sensu. Co ty chcesz osiągnąć..?
P-131506
alien1983
Temat założony przez niniejszego użytkownika
» 2015-04-27 18:04:24
QWebSocket *p2Socket - serwer websocket (usługa sieciowa) do komunikacji w dwie strony . np. kilku użytkowników łączy się z tym serwerem, chcę mieć dostęp do tych połączeń i w dowolnym czasie jeśli nadal są połączeni wysłać to czy owo do ich klienta lub choćby rozłączyć jeżeli zajdzie taka konieczność. Wyświetlić listę klientów tego serwera i np. ip itp. / zapisać w bazie.

Ta funkcja np. wysyła echo do tego kto wyśle cokolwiek do serwera.
C/C++
void EchoServer::processTextMessage( QString message )
{
    QWebSocket * pClient = qobject_cast < QWebSocket *>( sender() );
    if( pClient ) {
        pClient->sendTextMessage( message + " echo server" );
    }
}

pClient w tym obiekcje ma informacje o połączeniu do danego klienta websocket.

Powiedzmy tak, potrzebuje jakiś unikalny id danej sesji połączenia aby móc go zidentyfikować i defakto tylko mam ten adres do obiektu / gniazda do danego klienta serwera? Szukam sposobu jak to rozwiązać...

Lepszy przykład::

Mam podłączonych 100 klientów i okazuje się że podłącza się 101 klient który ma ten sam adress ip co 31 podłączony wcześniej, wiec chcę wysłać obu tym klientom tego serwera stosowną informację że więcej niż jeden klient w danym czasie korzysta z tego samego ip co np. może oznaczać ograniczenie funkcjonalności dla określonych usług w serwisie www. Np. dla bitcoinfaucet, który ma bardziej rygorystyczne zasady od zwykłej strony www.

I wtedy muszę poszukać adresy *pClient . Oczywiście standardowo będą umieszczone w QList.
P-131509
pekfos
» 2015-04-27 18:33:07
potrzebuje jakiś unikalny id danej sesji połączenia aby móc go zidentyfikować i defakto tylko mam ten adres do obiektu / gniazda do danego klienta serwera? Szukam sposobu jak to rozwiązać...
Nie możesz użyć adresu jako identyfikatora..?

i okazuje się że podłącza się 101 klient który ma ten sam adress ip co 31 podłączony wcześniej
A skąd to będziesz wiedzieć?
P-131510
alien1983
Temat założony przez niniejszego użytkownika
» 2015-04-27 20:58:49
Przy połączeniu adres ip i id? (adres * obiektu ? ) wrzucam do bazy mysql przy rozłączeniu wywalam oraz dodatkowo raz na jakiś czas porównuje aktywne sesje w bazie z tymi w QList websocket po adresie obiektu ? (jeżeli by coś wyleciało po drodze) Poza metodą socketDisconnected().

parę połączeń z jednego ip jest możliwe wiec po adresie ip nie bardzo.

P-131523
« 1 » 2
  Strona 1 z 2 Następna strona