rendered paste body char buf[2000];
DataHolder DataForServer;
DataHolder DataForClient;
while(true)
{
// Get the data from the client to the server
while(true)
{
ret = recv(contoclient.socket, buf, sizeof(buf), 0);
if(ret == SOCKET_ERROR)
{
ret = WSAGetLastError();
if(ret != WSAEWOULDBLOCK)
throw ZStarsLib::CException("ConToClient error (recv)");
break;
}
else
{
DataForServer.bb.append(buf, ret);
}
}
// Send the pending data to the server
while(DataForServer.bb.length())
{
ret = send(contoserver.socket, DataForServer.bb.contents(),
DataForServer.bb.length(), 0);
if(ret == SOCKET_ERROR)
{
ret = WSAGetLastError();
if(ret != WSAEWOULDBLOCK)
throw ZStarsLib::CException("ConToServer error (send)");
Sleep(5);
}
else
{
ByteBuffer bb;
char * data = DataForServer.bb.contents();
data += ret;
if(DataForServer.bb.length() - ret)
bb.append(data, DataForServer.bb.length() - ret);
DataForServer.bb = bb;
}
}
// Get the data from the server to the client
while(true)
{
ret = recv(contoserver.socket, buf, sizeof(buf), 0);
if(ret == SOCKET_ERROR)
{
ret = WSAGetLastError();
if(ret != WSAEWOULDBLOCK)
throw ZStarsLib::CException("ConToServer error (recv)");
break;
}
else
{
DataForClient.bb.append(buf, ret);
}
}
// Send the pending data to the client
while(DataForClient.bb.length())
{
ret = send(contoclient.socket, DataForClient.bb.contents(),
DataForClient.bb.length(), 0);
if(ret == SOCKET_ERROR)
{
ret = WSAGetLastError();
if(ret != WSAEWOULDBLOCK)
throw ZStarsLib::CException("ConToClient error (send)");
Sleep(5);
}
else
{
ByteBuffer bb;
char * data = DataForClient.bb.contents();
data += ret;
if(DataForClient.bb.length() - ret)
bb.append(data, DataForClient.bb.length() - ret);
DataForClient.bb = bb;
}
}
Sleep(5);
}