Hallo,

dein Code weist grobe Fehler auf. Abgesehen davon dass Errorchecking & handling praktisch nicht vorhanden ist, machst du Sachen die einfach verboten sind. Welcher Compiler lässt soetwas durchgehen? VC++ sicher nicht.


Zum Beispiel

int rev(SOCKET s,char *buffer)
{
char b[0];
char a[strlen(buffer)];
int i;
for(i=0;i<strlen(buffer);i++)
{
recv(s,buffer,strlen(b),0);
a[i] = buffer[0];
}
buffer = a;
return 0;
}
b ist ein Array ohne Elemente, von daher wirst du a.) einen Segmention Fault verursachen bzw da es eine Stackvariable ist b.) komplett zufällige Bytes haben, dh. dein strlen(b) bringt absolut nichts sinnvolles.

a versuchst du mit einer dynamischen Anzahl an Elementen zu deklarieren, was aber nicht möglich ist! Für dynamischen Speicher solltest du malloc/free nutzen.
Da müsste jeder Compiler abbrechen.

Dann weist du auch noch buffer die Addresse einer lokalen variable zu.

Was das "using namespace std;" soll verstehe ich auch nicht, das ist C Code ohne den Anflug von C++ .

Ich rate dir nochmal die Grundlagen von C zu lernen und zu verstehen.
Dem Code nach zu folgen fehlt da einiges an Grundwissen.

Mfg,
Ethon