////////////////// --- server side ---- ////////////////////////
Code:
if( xnet.HasValidConnection() )
{
if( xnet.IsReadAvailable() )
{
xnet.RecieveMsg( buff );
if( xnet.IsWriteAvailable() )
ServerHandleMessage( &xnet );
}
}
////////////////// --- client side ---- ////////////////////////
if( xnet.IsWriteAvailable() )
{
xnet.xmsg->buffer_size = 0;
xnet.SendMsg( GETVIDEOBUFFER, 0 );
}
if( xnet.IsReadAvailable() )
{
xnet.RecieveMsg( xscr.mini_pixel_buffer );
xnet.ClientHandleMsg();
}
/////////////////functions
bool IsReadAvailable()
{
fd_set read_able;
int can_read = 0;
read_able.fd_count = 0;
FD_SET( client_sock, &read_able);
can_read = select( 0, &read_able, 0, 0, 0 );
if( can_read == 1 )
return true;
else
return false;
}
bool IsWriteAvailable()
{
fd_set write_able;
int can_write = 0;
write_able.fd_count = 0;
FD_SET( client_sock, &write_able);
can_write = select( 0, 0, &write_able, 0, 0 );
if( can_write == 1 )
return true;
else
return false;
}
bool SendMsg( UINT xmsg_num, void *buffer )
{
int recieved = 0;
xmsg->xmsg_num = xmsg_num;
xmsg->validity_id = VALID_MSG;
send( client_sock, (char*)xmsg, sizeof( XMSG ), 0 );
do
{
recieved += sendto( client_sock, (char*)buffer + recieved, xmsg->buffer_size - recieved, 0, 0, 0 );
int err = WSAGetLastError();
if( err == WSAENOTCONN )
has_connection = 0;
}
while( recieved < xmsg->buffer_size );
}
bool RecieveMsg( void *buffer )
{
int recieved = 0;
recv( client_sock, (char*)xmsg, sizeof( XMSG ), 0 );
if( xmsg->validity_id != VALID_MSG)
return false;
do
{
recieved += recvfrom( client_sock, (char*)buffer + recieved, xmsg->buffer_size - recieved, 0, 0, 0 );
int err = WSAGetLastError();
if( err == WSAENOTCONN )
has_connection = 0;
}
while( recieved < xmsg->buffer_size );
return true;
}
void ServerHandleMessage()
{
msg->buffer_size = 400 * 320 - 1;
net_class->SendMsg( SENTVIDEOBUFFER, xscr.buffer );
}
void ClientHandleMessage()
{
//dostuff
}
thanks