- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- mefistofeles: Az elhízás nem akaratgyengeség!
- MasterDeeJay: i7 4980HQ asztali gépben (vs i7 4770)
- GoodSpeed: Te hány éves vagy?
- tordaitibi: Moltbook- az AI közösségi platformja
- Gurulunk, WAZE?!
- Luck Dragon: Asszociációs játék. :)
- Elektromos rásegítésű kerékpárok
- Lalikiraly: Commodore The C64, Ultimate
Aktív témák
-
czappa
aktív tag
Most van időm c, c++t tanulni. El is kezdtem, az első lépés egy egyszerű kliens-server alkalmazás lenne.
Miután megvan a socket foglalás és a bind a szerver oldalon, akkor egy végtelen ciklussal az accept-el várnám a klienseket.
A lényeg, hogy az accept-től visszakapott azonosító egy ún. ClientHandler osztály konstruktorának egyik paramétere. Egy kliensre működik, de nekem majd több klienst kell kezelnem, ezért első lépésben a egy-egy ClientHandler példányt egy set-ben akarok eltárolni.
Az eltárolás még megy, de...
Előbb a kód:server.cpp:
//az összehasonlitas a SET miatt kell, de nekem valójában nem kell a sorrend meghatározása ezért ilyen furcsa a Cmp
class Cmp{
public:
bool operator()(const ClientHandler a, const ClientHandler b)
{
if (&a == &b) return false;
else return true;
}
};
...
cout << "Bind sikeres" << endl;
cout << "Foprogram elott" << endl;
set<ClientHandler, Cmp> clients; //a set
while(1){
listen(foglalat, 1);
meret = sizeof(ugyfel);
//új kliens
uj=accept(foglalat, (struct sockaddr *)&ugyfel, (socklen_t*)&meret);
if (uj<0){
cout << "Accept sikertelen." << endl;
}else{
//az új kliensnek példányosítunk a ClientHandlerből
ch = new ClientHandler(uj, ugyfel);
cout << "Uj kapcsolat... " << endl;
//ezt eltárolom a SET-be
clients.insert(clients.begin(), *ch);
//clients.empty() == true ? cout << "true" : cout<< "false"<<endl;
//ez csak egy példa: törölném a set összes elemét egyesével, de elotte a ClientHandler kiirValamit fv.-ét meghívom
while( !clients.empty() ) {
//ez a hibás sor!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cout << "Torol: " << (*clients.begin()).kiirValamit() << endl;
clients.erase( clients.begin() );
}
//kilepeunk a vegtelen ciklusbol 1 kliens csatlakozasa utan
break;
}
}
if (close(foglalat) != 0)
cout << "Close sikertelen." << endl;
//delete ch;
return 0;
...
ClientHandler.cpp:
char* ClientHandler::kiirValamit(){
//cout << "kiir baromsagot" << endl;
return "valami";
}A hiba a "cout << "Torol: " << (*clients.begin()).kiirValamit() << endl;" sorral van:
passing ‘const ClientHandler’ as ‘this’ argument of ‘char* ClientHandler::kiirValamit()’ discards qualifiersA hiba üzenet alapján keresgéltem google-n, elvileg az a gond - ha jól értem -, hogy egy const függvényből egy nem const-ot hívok.
Az igaz, hogy ha "char* ClientHandler::kiirValamit() const{" -ot írok, akkor lefordul, de
1) Nem látom, hogy én ezt milyen const függvényből hívom
2) a kiirValamit még lehetne const, de a valódi alkalmazásban nem ezt a próba fv.-t hívnám meg, és a valódi fv.-nek hozzá kell férjen az osztály adattagjaihoz, hogy módosítsa azokat. (erre a "konstans fv." nem képes)A válaszokat előre is köszönöm!
Aktív témák
- Kerékpárosok, bringások ide!
- Parfüm topik
- Nem akármilyen új GeForce jöhet idén
- Több ezer műholddal bővülhet az Amazon flottája
- Sorozatok
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- A fociról könnyedén, egy baráti társaságban
- Forza sorozat (Horizon/Motorsport)
- RAM topik
- PlayStation 5
- További aktív témák...
- Lenovo ThinkCentre M93p Tiny - Core i5-4570T/16GB RAM/0 SSD
- GYÖNYÖRŰ iPhone 15 Pro Max 256GB Fekete Titán - 12 hónap JÓTÁLLÁS - Kártyafüggetlen, 100% Aksi
- GYÖNYÖRŰ iPhone 15 Pro Max 256GB Fehér Titán - 12 hónap JÓTÁLLÁS - Kártyafüggetlen, 100% Aksi
- Precision 5570 27% 15.6" FHD+ IPS i7-12800H RTX A1000 16GB 512GB NVMe ujjlolv gar
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / RX 5700 8GB / 16GB DDR4 / 256SSD + 2TB HDD
- LG 32UQ85V-W / 32" Nano IPS / 4K 3840x2160 / Gyárilag Kalibrált / HDR 400 / USB Type-C 90W
- ASUS Vivobook Go E1504GA-NJ284TW Notebook
- Xbox Series S 512 GB + kontroller 6 hó garancia, számlával!
- ÁRGARANCIA!Épített KomPhone i5 14400F 32/64GB RAM RX 9060 XT 16GB GAMER PC termékbeszámítással
- Bomba ár! Dell Latitude E6420 - i5-2GEN I 8GB I 320GB I DVD I HDMI I 14" HD+ I W10 I Gari!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

