In parole povere il codice che ti ho specificato unito con le tue correzioni funziona quando invio una stringa con almeno un carattere ma se per chiudere per esempio il messaggio, non posso inviare una stringa nulla perchè il programma si blocca...
Ecco il codice cambiato rispetto al primo che ti ho inviato:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <iostream.h>
#include <winsock.h>
#include <string.h>
#include <mem.h>
#pragma hdrstop
char buff[256];
AnsiString buffbuff;
int val=0;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
SOCKET clientsocket;
SOCKADDR_IN addr;
hostent * hostentrata;
char messaggio[80];
short port;
WORD wVersionRequested = MAKEWORD(2,2);
WSADATA wsaData;
int nLen=sizeof(SOCKADDR);
int ricv;
if (WSAStartup(wVersionRequested, &wsaData)!= NO_ERROR)
{
cout << "Errore di Inizializzazione" << endl;
goto fine;
}
port = 25;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("83.224.64.25");
addr.sin_port = htons(port);
clientsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (connect(clientsocket, (LPSOCKADDR)&addr, sizeof(addr)) < 0)
{
printf("Errore nella connessione con il Server\nPremi invio per uscire.");
goto fine;
}
dinuov:
if (val==1) {
goto salto;
}
risult:
memset(buff,0,sizeof(buff));
ricv=recvfrom(clientsocket,buff,sizeof(buff),0,(LP SOCKADDR)&addr, &nLen);
printf("%s\n",buff);
cout << "\t";
salto:
cin.get(messaggio, 256, '\n');
while (cin.get() != '\n');
strcpy(buff,messaggio);
strcat(buff, "\n");
sendto(clientsocket,buff,strlen(buff),0,(LPSOCKADD R)&addr, nLen);
strcpy(buff,messaggio);
buffbuff=(char*)buff;
if (buffbuff=="Data"||buffbuff=="data") {
if (!val==1) {
val=1;
goto risult;
}
}
if (buffbuff==".") {
val=0;
}
goto dinuov;
fine:
closesocket(clientsocket);
WSACleanup();
getchar();
}
//---------------------------------------------------------------------------
Prova a guardarlo cosi com'è tanto non è poi molto diverso dal primo che ti ho mandato comunque credo che SENDTO non accetti il buffer "Buff" se questo è Nullo. E comunque un ipotesi magari e solo un mio stupido errore nella correzione, rispetto al primo codice da me fornito.