Czy jest jakaś zmienna/klasa podobna do cout / qDebug() ?
Ostatnio zmodyfikowano 2015-04-27 21:12
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" ?? |
|
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ąć. |
|
Monika90 |
» 2015-04-27 10:37:48 ostringstream do tego służy |
|
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ć |
|
pekfos |
» 2015-04-27 17:09:04 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ąć..? |
|
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. 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. |
|
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ć? |
|
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.
|
|
« 1 » 2 |