» »

[C] UDP

[C] UDP

Mediator ::

Delam program Krizci Krozci v Cju. Zgleda pa nekako tako: Dva klienta se povezeta na server, ki posreduje podatke od enega odjemalca do drugega.
Problem pa pride ko iz serverja s funkcijo sendto() pošiljam podatke klientom, mi vedno ta pošlje tistemu od katerega je nazadnje prejel podatke..

npr.

//sprejmemo podatke od prvega odjemalca
n = recvfrom(vticnica , polje , 255 , 0 , (struct sockaddr *)&client , &velikostC1);
client1 = client;

//sprejememo podakte od drugega odjemalca
n = recvfrom(vticnica , polje , 255 , 0 , (struct sockaddr *)&client , &velikostC1);
client2 = client;


//##############################################################

tukaj se zdaj zaplete s tole kodo:

n = sendto(vticnica , polje , strlen(polje) , 0 , (struct sockaddr *)&client1 , velikostC1);

mislim poslat neke podatke na prvi klient vendat mi vedno poslje na tistega, kateri mu je poslal podatke kot drugi.

Mi lahko kdo pove v cem je fora?

Najlepša hvala!
  • spremenilo: snow ()

Gundolf ::

Ja, vsebino pointerja hočeš kopirat kar z operatorjem =.
Vsebino client pointerja moraš skopirat nekam drugam, ker se očitno nahaja v nekem statičnem bufferju in se pointer nanj med zaporednimi klici recvfrom ne spreminja.

NoUse4AName ::

UDP za to ni primeren. Paketi se vedno zgubljajo na internetu in UDP ne zagotovi da bo paket v resnici prišel na drugo stran. Za to se uporabi TCP.

BigWhale ::

UDP je za razne igre povsem primeren. Sploh tam kjer rabis hitro komunikacijo in ti ni nujno, da cisto vsak paket pride na drugo stran

NoUse4AName ::

Seveda za večje igre kjer se podatki pošiljajo konstantno. Za takšne preproste špile pa nima smisla da konstantno pošiljaš update, ampak samo kadar pride do nekega dogodka.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c] ne sprejme UDP paketa

Oddelek: Programiranje
7989 (577) slovencl
»

SMTP v c -ju

Oddelek: Programiranje
282127 (1268) BigWhale
»

Delo z omrezjem v linuxu

Oddelek: Programiranje
101303 (1149) CCfly
»

C: connect() funkcija, kako nastaviti timeout

Oddelek: Programiranje
231782 (1563) fefko-the-bulldog
»

Casovni problem v C/C++

Oddelek: Programiranje
91258 (1159) sid_dabster

Več podobnih tem