Portál AbcLinuxu, 13. května 2025 20:16
Zdravím,
mám takový menší problém, nejde mě ani tak o řešení problému kodu, ale spiš o možné teorie proč to nejede..
Mám takovou aplikačku(hru) client se připojí na server ten vygeneruje cookie o 4 bitech a pošle tyto cookie dalšímu serveru(myšleno jako další aplikace) tento server odpoví, a pošle cookie z5, ale bohužel někam špatně asi.. Poněvadž chat tyto pakety už nedostane nevím vůbec proč hrabal jsem se už v kernelu(apliakce jedou na linuxu) a kompiloval vše možná jádra.
A žádná změna.
zde je posílací část ze serveru který odpovídá, ale nikdy tyto pakety nedojdou na další server
// zpet chatu
cookie->type = TOCH_COOKIE_REPLY;
send(g_pChatManager->GetSock(), cookie, len, 0);
l_log("Send replay cookie (client %d) to chat ", cookie->chr_id);
int iResult(send());
Naprosto nevím co může být špatně vše jede na localhostu 0.0.0.0 a když sleduju porty tak pakety tam opravdu proudí..
Pokud by měl někdo nějaký nápad co by to mohlo dělat byl bych mu vděčen děkuji..
Client je mezitím ve stavu čekaní na cookie od serveru(je seklej:D)
Z popisu te komunikace nevim o co presne se snazite, ale hlavne tezko hadat kde muze byt problem, kdyz nevim(e) jak to delate. Muzete to vice rozepsat?
Navratove hodnoty send() overujete? Opravdu ten "meziserver" ty pakety predava dal? ...
Jako cookie se označují především jistá data uchovávající stavovou informaci v HTTP, případně něco tomu velmi podobného. Asi myslíte spíš kus textu posílaný přes TCP nebo UDP; že si to v aplikaci z nějakého důvodu nazýváte cookie spíš rozptyluje od vašeho problému (přinejmenším mě).
Mutex? Žádný nikde nevidím.
int iResult(send());
Funkci send, která nebere žádné parametry, neznám (a nezná ji ani Linux nebo POSIX obecně).
V kernelu žádná chyba ohledně síťování celkem jistě není. Pokud nefunguje aplikace, je chyba v ní a ne v kernelu.
Prosím rozepište se trochu více, a prosím trochu pečlivěji. (Pokud trpíte nějakou poruchou, pak se omlouvám.)
Mno int iResult(send()); to byl překlep. uznávam. Mutex tam je unlock před tím zdrojékem sem se o řádek spletl pthread_mutex_unlock(&cookies_mutex);
jinak ano přes cookies posílam né text, ale číslo. Jinak v kernelu sem se harabal kvůli Packet socket: mmaped IO musi být enabled.
Mno ten zdrojak send nevím co může být špatně sin_port mám taky definovanej atd. Pakety tam jsou a send určitě tu hodnotu pošle zkoušel jsem.
Chat by měl příjmout v tomto kodu:
case TOCH_COOKIE_REPLY:
{
tGameSrvInfo reply;
char type;
uint nPlyIndex;
l_log("Received TOCH_COOKIE_REPLY message from server");
cookie = (tChatCookie *) buf;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.