Toon posts:

BC++ Builder sockets vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dit is echt een domme vraag en ik weet het zelf maar ik kan er nu ff echt niet uitkomen :'(

Het gaat om een chatprogg.
1 server, [insert aantal] clients.
nu wil ik dus vanaf de server een soort functie hebben "RetrieveNickname", dat ik dus in een loopje van iedere verbinding de gebruikte nickname op kan vragen.

Maar ik kom er gewoon niet uit :+

Ik gebruik de std. clientsocket en serversocket componenten.

Iemand een hint?

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Hmz. Je moet denk ik gewoon een lijst bijhouden met daarin de ip (oid) van de connecties, en de bijbehorende nick. Je bent iig een beetje vaag in je omschrijving. Kan je je wat nader verklaren?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

geef eens aan wat je al geprobeerd hebt, wat er niet werkt, wat zijn je errors, etc.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ok ik ben niet echt helemaal duidelijk nee, misschien dat het zo duidelijker is:

Bij het ServerSocketClientConnect (leuk woord) event heb ik deze code:
code:
1
Log->Items->Add("Client Connected: " + Socket->RemoteHost + " " + "Port: " + Socket->RemotePort);

Maar daar wil ik dus de bijbehorende nickname bij, maar hoe ga ik dat voorelkaar krijgen?
Als ik dat weet, weet ik genoeg.

(forgive me my Cbuilder noobness :+)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

lijkt me logisch: een request voor nicknaam opsturen, en het antwoord afvangen, en daar heb je je nick

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op dinsdag 04 juni 2002 21:38 schreef .oisyn het volgende:
lijkt me logisch: een request voor nicknaam opsturen, en het antwoord afvangen, en daar heb je je nick
Dat dacht ik ook..toen liep men progg vast :'(

[edit]
Hoe stuur ik correct zo'n request en vang ik het antwoord af?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

blocking sockets?
Dus dat je meer data wilt lezen dan er binnen is gekomen? Dan blijft ie wachten tot de rest van de data binnen is, en als dat niet komt... tja dan hangt ie.

oplossing: sockets non-blocking maken, of kijken hoeveel bytes er in de buffer staan en zoveel uitlezen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op dinsdag 04 juni 2002 21:42 schreef .oisyn het volgende:
blocking sockets?
Dus dat je meer data wilt lezen dan er binnen is gekomen? Dan blijft ie wachten tot de rest van de data binnen is, en als dat niet komt... tja dan hangt ie.

oplossing: sockets non-blocking maken, of kijken hoeveel bytes er in de buffer staan en zoveel uitlezen
Ze zijn nonBlocking.

Maar blijkbaar doe ik iets behoorlijk fout, ik doe het min of meer zo:

[pseudocode server]
Server->socket->sendtext(stuurmeffdienickname);

[pseudocode client]
if (msg == stuurmeffdienickname)
stuurnickname();

[pseudocode server]
nickname = server->socket->recievetext();

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

komt de request voor de nick wel aan op de client?
Misschien een typefout bij het controleren van de server message?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op dinsdag 04 juni 2002 21:52 schreef .oisyn het volgende:
komt de request voor de nick wel aan op de client?
Misschien een typefout bij het controleren van de server message?
Ik heb het al zovaak getest..
Ik ga het nu gewoon nog ff een keer proberen voor de zekerheid :+

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

post anders even wat code, kunnen we met z'n alle meekijken
en afzijken :P nee hoor grapje ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
In de server heb ik nu dit in een procedure staan:
code:
1
2
3
AnsiString nickname;
ServerSocket->Socket->SendText("#nickname");
nickname = ServerSocket->Socket->ReceiveText();

en in de client:
code:
1
2
3
4
if (Msg == "#nickname") 
{
    ClientSocket->Socket->SendText(nickname);
}

Maar ik krijg een error dat de socket niet connected is...maar dat issie wel :?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

wat is het type van Msg?

(zal wel iets als TString zijn ofzo, heb verder geen ervaring met BCB ;))
maar als het char * oid is, dan werkt de == natuurlijk niet... dan zul je moeten controleren met strcmp

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Alles is inmiddels opgelost, heb gewoon een andere socket gebruikt waarover namen, info, profiles etc getransfered worden.
Is ook wat overzichtelijker.

Was uiteindelijk iig. een hele domme fout die ik niet eens ga vertellen :+ :P

Dank iig voor diegenen die erover nagedacht hebben :)
Pagina: 1