Не существует такой вещи, как «сокет C», но вы, вероятно, имеете в виду одну из двух вещей (WinSock или libsocket).В любом случае, основным методом, который я бы использовал, было бы использовать #define
и простую функцию, подобную этой:
#define fprintf(a,b,...) fprintfsock(a,b,__VA_ARGS__)
void fprintfsock( SOCKET s, const char* f, ... )
{
va_list a;
va_start( a, f );
int l = vsnprintf( 0, 0, f, a );
char* buf = (char*) malloc( l + 1 );
va_start( a, f );
vsnprintf( buf, l, f, a );
send( s, buf, l, 0 );
free( buf );
}
, которая будет работать в любом из них, кроме как с libsocket, вы должны ввести typedef или использоватьINT для розетки.Убедитесь, что вы #undef fprintf
после того, как закончите вход в сокет!