Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Senden von Int Variabln

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.03.2010, 15:35 Uhr
Moritz1243



Hallo,

kann mir jemand helfen beim Senden von Int Variablen. Ich habe einen TCP server erstellt, das senden von strings funktioniert perfekt, aber das senden von varialen wie int oder float geht nicht, mein ansatz:

void SocketSendInt(SOCKET Socket, int i)
{
send(Socket, i, sizeof(int),4,0);
}

Hat jemand eine Idee wie man das lösen kann, danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.03.2010, 16:37 Uhr
ao

(Operator)


send (Socket, &i, sizeof (int), 4, 0);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.03.2010, 17:11 Uhr
Moritz1243




Zitat von ao:
send (Socket, &i, sizeof (int), 4, 0);


Wenn ich das so mache komme der folgende Fehler:
CUsers\Moritz\Desktop\Lan\src\Lan.cpp||In function `void SocketSendInt(SOCKET, int)'
CUsers\Moritz\Desktop\Lan\src\Lan.cpp|95|error: cannot convert `int*' to `const char*' for argument `2' to `int send(SOCKET, const char*, int, int)'|
||=== Build finished: 1 errors, 0 warnings ===|

Achaj und kannst du mir auch noch sagen wie ich die int variable dann empfange?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.03.2010, 17:19 Uhr
ao

(Operator)


OK, dann so:

send (Socket, (const char *) &i, sizeof (int), 4, 0);

Und empfangen mit .... scharf nachdenk, wie das auf Englisch heißt ... receive. Wahrscheinlich genauso, nur ohne const.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.03.2010, 17:29 Uhr
Moritz1243




Zitat von ao:
OK, dann so:

send (Socket, (const char *) &i, sizeof (int), 4, 0);

Und empfangen mit .... scharf nachdenk, wie das auf Englisch heißt ... receive. Wahrscheinlich genauso, nur ohne const.


Also mit dem Befehl kommt auch ein Fehler.
CUsers\Moritz\Desktop\Lan\src\Lan.cpp||In function `void SocketSendInt(SOCKET, int)'
CProgram Files (x86)\CodeBlocks\MinGW\include\WinSock2.h|549|error: too many arguments to function `int send(SOCKET, const char*, int, int)'|
CUsers\Moritz\Desktop\Lan\src\Lan.cpp|96|error: at this point in file|
||=== Build finished: 2 errors, 0 warnings ===|

hier sind die Funktionen in der Winsock2.h

WINSOCK_API_LINKAGE int PASCAL recv(SOCKET,char*,int,int);
WINSOCK_API_LINKAGE int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
WINSOCK_API_LINKAGE int PASCAL send(SOCKET,const char*,int,int);

kannst du mir eben für recv auch ein bsp geben

und danke schonmal für deine Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.03.2010, 21:55 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
send (Socket, (const char *) &i, sizeof (int), 4, 0);


das 2te 4 gehört raus:


C++:
send (Socket, (const char *) &i, sizeof (int), 0);


receive ist komplett analog:


C++:
recv(Socket, (const char *) &i, sizeof (int), 0);

--
class God : public ChuckNorris { };

Dieser Post wurde am 21.03.2010 um 21:55 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.03.2010, 08:34 Uhr
ao

(Operator)



Zitat von Moritz1243:
Also mit dem Befehl kommt auch ein Fehler.
too many arguments to function `int send(SOCKET, const char*, int, int)'


Moritz, wenn du Fehlermeldungen wie diese nicht selbständig interpretieren und beheben kannst, dann, würde ich sagen, solltest du dich vorerst mit einfacheren Dingen beschäftigen als mit Sockets.

Gruß,
ao

Dieser Post wurde am 22.03.2010 um 08:35 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.03.2010, 12:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Also ich bin mir nicht sicher ob das so der Beste weg ist. Was wäre denn wenn Sender und Empfänger eine unterschiedliche Byte Order haben?

Sicherer wäre es doch das int zu serialisieren also in einen string umzuwandeln.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.03.2010, 12:24 Uhr
ao

(Operator)


Hast recht.


Zitat:
Sicherer wäre es doch das int zu serialisieren also in einen string umzuwandeln.


... oder festzulegen, dass Network Byte Order verwendet werden soll. Aber ich glaube, so weit ist der Kollege längst noch nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.03.2010, 13:41 Uhr
Moritz1243




Zitat von ao:
Hast recht.


Zitat:
Sicherer wäre es doch das int zu serialisieren also in einen string umzuwandeln.


... oder festzulegen, dass Network Byte Order verwendet werden soll. Aber ich glaube, so weit ist der Kollege längst noch nicht.


Ich hatte es für float variabln so gemacht das sie in einen string gepackt werden, jedoch ist das sehr aufwendig, deshalb wollte ich auch wissen wie man es am besten macht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: