Buona sera ragazzi!

Sto provando a creare un prgramma client/server ma non riesco a farlo funzionare!

Allora, io vorrei:

codice:
Server attende il client;
Client si connette;
Server gli da il benvenuto ;
Client risponde;

do{
Server è pronto a ricevere comandi;
Client da un comando;
Server conferma l'arrivo dei messaggi;
Server lo elabora;
}while(messaggio == "exit")
Io uso un protocollo TCP/IP sulla porta 1111 ma il server restituisce messaggi strani. Al primo mex aggiunge caratteri strani, al secondo altri caratteri indecifrabili e alla terza volta non risponde più!

Server:
codice:
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
	SOCKET ServerSocket,ClientSocket;
	bool isClientConnected = false;
	bool isServerListener = true;

	WSADATA wsaInfo;
    WSAStartup(MAKEWORD(2,2), &wsaInfo);

    ServerSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

	//if(ServerSocket == INVALID_SOCKET) throw Error;

    SOCKADDR_IN Address;
    Address.sin_family = PF_INET;
    Address.sin_port = htons(1111);
    Address.sin_addr.s_addr = INADDR_ANY;

    bind(ServerSocket,(LPSOCKADDR)&Address, sizeof(Address));
    listen(ServerSocket, 1);


	for(;;)
	{
	    ClientSocket = accept(ServerSocket, NULL, NULL);

	    isClientConnected = true;

		string command;

		Sleep(5);
		command = Receive(ClientSocket);

		cout << "Executing command...";
		Send(ClientSocket,(char*)command.c_str());
    }

    Send(ClientSocket,"Closing Server...");
	WSACleanup();
	return 0;
}

int Send(SOCKET s, char *text)
{
	return send(s, text,lstrlen(text),0);
}

char* Receive(SOCKET s)
{
	char* buffer;
	recv(s,buffer,sizeof(buffer),0);
	return buffer;
}
client:
codice:
int main(int argn,char **argv)
{

SOCKET sock;
struct sockaddr_in sock_addr;
WSADATA data;

char command[1024];
char response[1024];
char mex[1024];

if(WSAStartup(MAKEWORD(2,0),&data) != 0)
{
closesocket(sock);
WSACleanup();
return 0;
}

sock=socket(PF_INET,SOCK_STREAM,0);
sock_addr.sin_family=PF_INET;
sock_addr.sin_port=htons(1111);
sock_addr.sin_addr.S_un.S_un_b.s_b1=127;
sock_addr.sin_addr.S_un.S_un_b.s_b2=0;
sock_addr.sin_addr.S_un.S_un_b.s_b3=0;
sock_addr.sin_addr.S_un.S_un_b.s_b4=1;

if(connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr)) != 0)
{
closesocket(sock);
WSACleanup();
return 0;
}

for (;;)
{
 	cout << "command: ";
    cin >> command;
    Send(sock,command);
    cout << Receive(sock);
}

closesocket(sock);
WSACleanup();
return 0;
}

char* Receive(SOCKET s)
{
	char* buffer;
	recv(s,buffer,sizeof(buffer),0);
	return buffer;
}


int Send(SOCKET s, char *text)
{
	return send(s, text,lstrlen(text),0);
}

Vi prego corregete questa roba che ci sto sopra da un giorno!

<OT>
Domanda stupida: ma al server c++ potrei dialogare con un server in c# vero?
</OT>

aiutatemi ragazzi! I'm in your hands...