Skocz do zawartości

Prośba o komentarz do log-a kompilacji


mes mariusz

Polecane posty

Prośba o wsparcie dla początkującego... Załączam kod i log kompilatora. Prośba o komentarz do log-a i wskazanie jak to poprawić.

 

Kod:

 

<code=cpp> #include <windows.h>

#include <winsock2.h>

 

#pragma comment(lib, "ws2_32.lib")

 

// Insist on at least Winsock v1.1

const VERSION_MAJOR = 1;

const VERSION_MINOR = 1;

 

#define CRLF "\r\n" // carriage-return/line feed pair

 

void ShowUsage(void)

{

cout << "Usage: SENDMAIL mailserv to_addr from_addr messagefile" << endl

<< "Example: SENDMAIL smtp.myisp.com rcvr@elsewhere.com my_id@mydomain.com message.txt" << endl;

 

exit(1);

}

 

// Basic error checking for send() and recv() functions

void Check(int iStatus, char *szFunction)

{

if((iStatus != SOCKET_ERROR) && (iStatus))

return;

 

cerr << "Error during call to " << szFunction << ": " << iStatus << " - " << GetLastError() << endl;

}

 

int main(int argc, char *argv[])

{

int iProtocolPort = 0;

char szSmtpServerName[64] = "";

char szToAddr[64] = "";

char szFromAddr[64] = "";

char szBuffer[4096] = "";

char szLine[255] = "";

char szMsgLine[255] = "";

SOCKET hServer;

WSADATA WSData;

LPHOSTENT lpHostEntry;

LPSERVENT lpServEntry;

SOCKADDR_IN SockAddr;

 

// Check for four command-line args

if(argc != 5)

ShowUsage();

 

// Load command-line args

lstrcpy(szSmtpServerName, argv[1]);

lstrcpy(szToAddr, argv[2]);

lstrcpy(szFromAddr, argv[3]);

 

// Create input stream for reading email message file

ifstream MsgFile(argv[4]);

 

// Attempt to intialize WinSock (1.1 or later)

if(WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData))

{

cout << "Cannot find Winsock v" << VERSION_MAJOR << "." << VERSION_MINOR << " or later!" << endl;

 

return 1;

}

 

// Lookup email server's IP address.

lpHostEntry = gethostbyname(szSmtpServerName);

if(!lpHostEntry)

{

cout << "Cannot find SMTP mail server " << szSmtpServerName << endl;

 

return 1;

}

 

// Create a TCP/IP socket, no specific protocol

hServer = socket(PF_INET, SOCK_STREAM, 0);

if(hServer == INVALID_SOCKET)

{

cout << "Cannot open mail server socket" << endl;

 

return 1;

}

 

// Get the mail service port

lpServEntry = getservbyname("mail", 0);

 

// Use the SMTP default port if no other port is specified

if(!lpServEntry)

iProtocolPort = htons(IPPORT_SMTP);

else

iProtocolPort = lpServEntry->s_port;

 

// Setup a Socket Address structure

SockAddr.sin_family = AF_INET;

SockAddr.sin_port = iProtocolPort;

SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);

 

// Connect the Socket

if(connect(hServer, (PSOCKADDR) &SockAddr, sizeof(SockAddr)))

{

cout << "Error connecting to Server socket" << endl;

 

return 1;

}

 

// Receive initial response from SMTP server

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");

 

// Send HELO server.com

sprintf(szMsgLine, "HELO %s%s", szSmtpServerName, CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() HELO");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() HELO");

 

// Send MAIL FROM: <sender@mydomain.com>

sprintf(szMsgLine, "MAIL FROM:<%s>%s", szFromAddr, CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() MAIL FROM");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() MAIL FROM");

 

// Send RCPT TO: <receiver@domain.com>

sprintf(szMsgLine, "RCPT TO:<%s>%s", szToAddr, CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() RCPT TO");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() RCPT TO");

 

// Send DATA

sprintf(szMsgLine, "DATA%s", CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() DATA");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() DATA");

 

// Send all lines of message body (using supplied text file)

MsgFile.getline(szLine, sizeof(szLine)); // Get first line

 

do // for each line of message text...

{

sprintf(szMsgLine, "%s%s", szLine, CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() message-line");

MsgFile.getline(szLine, sizeof(szLine)); // get next line.

} while(MsgFile.good());

 

// Send blank line and a period

sprintf(szMsgLine, "%s.%s", CRLF, CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() end-message");

 

// Send QUIT

sprintf(szMsgLine, "QUIT%s", CRLF);

Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() QUIT");

Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() QUIT");

 

// Report message has been sent

cout << "Sent " << argv[4] << " as email message to " << szToAddr << endl;

 

// Close server socket and prepare to exit.

closesocket(hServer);

 

WSACleanup();

 

return 0;

}</code>

 

 

 

Kompilator: Default compiler

Building Makefile: "D:\_MC\Prg\cpp\mail\Makefile.win"

Wykonywanie make...

make.exe -f "D:\_MC\Prg\cpp\mail\Makefile.win" all

g++.exe -c main.cpp -o main.o -I"D:/_MC/Prg/cpp/Dev-CppPortable/App/devcpp/lib/gcc/mingw32/3.4.2/include" -I"D:/_MC/Prg/cpp/Dev-CppPortable/App/devcpp/include/c++/3.4.2/backward" -I"D:/_MC/Prg/cpp/Dev-CppPortable/App/devcpp/include/c++/3.4.2/mingw32" -I"D:/_MC/Prg/cpp/Dev-CppPortable/App/devcpp/include/c++/3.4.2" -I"D:/_MC/Prg/cpp/Dev-CppPortable/App/devcpp/include"

 

main.cpp:7: error: ISO C++ forbids declaration of `VERSION_MAJOR' with no type

 

main.cpp:8: error: ISO C++ forbids declaration of `VERSION_MINOR' with no type

 

main.cpp: In function `void ShowUsage()':

main.cpp:14: error: `cout' undeclared (first use this function)

main.cpp:14: error: (Each undeclared identifier is reported only once for each function it appears in.)

main.cpp:15: error: `endl' undeclared (first use this function)

main.cpp: In function `void Check(int, char*)':

main.cpp:26: error: `cerr' undeclared (first use this function)

main.cpp:26: error: `endl' undeclared (first use this function)

main.cpp: In function `int main(int, char**)':

main.cpp:54: error: `ifstream' undeclared (first use this function)

main.cpp:54: error: expected `;' before "MsgFile"

main.cpp:59: error: `cout' undeclared (first use this function)

main.cpp:59: error: `endl' undeclared (first use this function)

main.cpp:108: error: `sprintf' undeclared (first use this function)

main.cpp:128: error: `MsgFile' undeclared (first use this function)

 

make.exe: *** [main.o] Error 1

 

Wykonanie zakończone

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...