PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : byteweises einlesen



Shack
30-09-2002, 23:29
Hi,

ich möchte mich mit meinem Server ( den ich schreibe ),
an einem Port hängen und erwarte dann dort Requests in Form
von 4 Bytes.

Meine Frage nun , mit welcher Funktion kann ich am besten die
ankommenden Bytes empfangen und im Anschluß spechern? Mit recv() läuft es nicht so richtig , aber vieleicht mache ich ja auch damit was falsch.

Vieleicht hat ja jemand ein Tip

cu Shack

anda_skoa
30-09-2002, 23:57
Hmm, so low level hab ich mit Sockets noch nicht gearbeitet.
mithras hat vor kurzem servermäßige Sachen gemacht, der kennt sich da sicher besser aus.

Aber ohne Code kann man schwer feststellen, wo es liegen könnte.

Ciao,
_

DerLipper[TuX]
01-10-2002, 14:04
falls du sowas machst:


nBytesRead = recv(...);


würde ich noch folgendes drumherum basteln:


#define K_MSG_LEN 4
...
nBytesTotal = 0;

while (nBytesTotal < K_MSG_LEN)
{
nBytesRead = recv(...);

if (0 == nBytesRead)
{
cerr << "client closed connection!" << endl;
break;
}

nBytesTotal += nBytesRead;
}


Gruß,
Marko

Shack
01-10-2002, 18:59
ich mache schon sowas wie :

int read =recv( fd ,recv_buffer,sizeof(recv_buffer),0);

wobei buffer ein char Array ist.

macht es Probleme wenn die Daten Byteverschlüsselt ankommen ?
ich meine , kann ich die auch in dem buffer speichern ?
eigentlich ja schon ,oder ?

Und noch ne Frage : Ich hab im Quellquode vom VNC Server die Funktion
tcpip_read(...) gesehen. Kann mir jemand sagen wo die herkommt ?