Fixed net-order stuff, and readpack function.

This commit is contained in:
Charles Lohr
2004-06-30 07:16:08 +00:00
parent c244fe8f46
commit 4428ede624
+9 -7
View File
@@ -8,10 +8,12 @@
Windows-Based OSes. Windows-Based OSes.
********************************************/ ********************************************/
// We need the WinSock32 Library on Windows // StepMania only includes
#include "global.h" #include "global.h"
#include "ezsockets.h" #include "ezsockets.h"
// We need the WinSock32 Library on Windows
#if defined(_XBOX) #if defined(_XBOX)
#elif defined(_WINDOWS) #elif defined(_WINDOWS)
#pragma comment(lib,"wsock32.lib") #pragma comment(lib,"wsock32.lib")
@@ -274,7 +276,8 @@ int EzSockets::PeekData(char *data, unsigned int bytes)
//Packet system (for structures and classes) //Packet system (for structures and classes)
void EzSockets::SendPack(char * data, unsigned int bytes) void EzSockets::SendPack(char * data, unsigned int bytes)
{ {
SendData ((char *)&bytes,sizeof(int)); unsigned int SendSize = htonl(bytes);
SendData ((char *)&SendSize,sizeof(int));
SendData (data,bytes); SendData (data,bytes);
} }
@@ -282,10 +285,7 @@ int EzSockets::ReadPack(char * data, unsigned int max)
{ {
int size = PeekPack(data,max); int size = PeekPack(data,max);
if (size!=-1) if (size!=-1)
{ inBuffer = inBuffer.substr(size+4);
int tSize = (int)((inBuffer.substr(0,4)).c_str());
inBuffer = inBuffer.substr(tSize+4);
}
return size; return size;
} }
@@ -302,7 +302,8 @@ int EzSockets::PeekPack(char * data, unsigned int max)
} }
unsigned int size=0; unsigned int size=0;
PeekData((char*)size,4); PeekData((char*)&size,4);
size = ntohl(size);
while ((inBuffer.length()<(size+4)) && !IsError()) while ((inBuffer.length()<(size+4)) && !IsError())
{ {
@@ -323,6 +324,7 @@ int EzSockets::PeekPack(char * data, unsigned int max)
{ {
unsigned int size=0; unsigned int size=0;
PeekData((char*)size,4); PeekData((char*)size,4);
size = ntohl(size);
if (inBuffer.length()<(size+4)) if (inBuffer.length()<(size+4))
return (-1); return (-1);