Newsgroup: it.comp.lang.c++
Titolo: Problema

Salve, sto cercando di scrivere un programma che spedisce dei messaggi ad un
server. Purtroppo, ad un certo punto, dopo l'invio di una stringa mi da una
risposta strana: ìcpt command unrecognized.
Il codice è questo:
void CMailDlg::OnClickSend()
{
  // Inizio scrittura codice
 UpdateData(TRUE);
 char response[100],
     terminatore[2],
    stringa[50];
 WSAData data;
 SOCKET s;
 long a;
 int d;
 struct sockaddr_in socket_;
 struct hostent *hn;
 a = WSAStartup(0x0101, &data);
 s = socket(AF_INET, SOCK_STREAM, 0);
 hn = gethostbyname(m_server);
 terminatore[0] = 13; terminatore[1] = 10;
 if (hn == NULL) MessageBox("Server non trovato");
 // Imposto i dati per la connessione
  socket_.sin_family = AF_INET;
  // Imposto la porta di comunicazione
  socket_.sin_port = htons(25);
  // Imposto l'indirizzo di comunicazione (server)
  socket_.sin_addr.s_addr = ((struct in_addr *)(hn->h_addr))->s_addr;
 d = connect(s, (struct sockaddr *) &socket_, sizeof(socket_));
  recv(s, response, 100, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
 send(s, "HELO 
server.com
", strlen("helo 
server.com
"), 0);
 send(s, terminatore, 2, 0);
 recv(s, response, 100, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
 strcpy(stringa, "mail from:<");
 strcat(stringa, m_sender);
 strcat(stringa, ">");
 send(s, stringa, strlen(stringa), 0);
 send(s, terminatore, 3, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
// ------------------------
 strcpy(stringa, "rcpt to:<");
 strcat(stringa, m_receiver);
 strcat(stringa, ">");
 send(s, stringa, strlen(stringa), 0);
 send(s, terminatore, 2, 0);
 recv(s, response, 100, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
// ------------------------
 send(s, "DATA", 4, 0);
 send(s, terminatore, 2, 0);
 recv(s, response, 100, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
}
Il problama, facendo il debug me lo da in quella parte che vi ho segnalato.
Cosa può essere?
Grazie.
--
Ramses
---
http://evilzone.tsx.org
http://knowledgeparty.cjb.net

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

 wrote in message
news:3B2DC8A6...@divalsim.it...


 > Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
...
Meglio se quoti meno e non alla fine del post.
Il tuo codice era:
 strcpy(stringa, "rcpt to:<");
 strcat(stringa, m_receiver);
 strcat(stringa, ">");
 send(s, stringa, strlen(stringa), 0);
 send(s, terminatore, 2, 0);
 recv(s, response, 100, 0);
 m_responses = ("%s", response);
 UpdateData(FALSE);
La parte che non e' OT sono le prime tre righe e la penultima. Verifica nel
debugger che il contenuto di stringa sia quello atteso dopo la seconda strcat
(metti un breakpoint sulla prima send e verifica il valore di stringa).
La penultima riga e' codice legale e corrisponde a:
 m_responses = response;
non credo che sia quello che volevi. Verifica.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 non credo che sia quello che volevi. Verifica.
In che senso? Dovrebbe assegnare alla variabile m_responses (che sarebbe poi
una text box) la risposta del server. Cmq penso che neanche questo sia
l'erroe (o sbaglio?). Controllerň anche questo.
Grazie cmq per la risposta.
