ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/test/tsmtp.C
Revision: 1.1
Committed: Mon Feb 26 15:02:39 2001 UTC (23 years, 8 months ago) by ab11
Content type: text/plain
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Log Message:
Test programs for Networking class. Unused by the host

File Contents

# User Rev Content
1 ab11 1.1 #include <sockinet.h>
2     #include <stdio.h>
3    
4     static void send_cmd(iosockstream&, const char* cmd=0);
5     static void get_text(iosockstream&);
6    
7     int main(int ac, char** av)
8     {
9     if (ac != 3) {
10     cerr << "USAGE: " << av[0] << " hostname userid\n";
11     return 1;
12     }
13    
14     iosockinet sio (sockbuf::sock_stream);
15    
16     sio->connect(av[1], "smtp", "tcp");
17    
18     send_cmd(sio, 0);
19     send_cmd(sio, "HELO kelvin.seas.virginia.edu");
20     send_cmd(sio, "HELP");
21     send_cmd(sio, "MAIL FROM:<test@test>");
22    
23     char buf[512];
24     sprintf(buf, "RCPT TO:%s", av[2]);
25     send_cmd(sio, buf);
26    
27     send_cmd(sio, "DATA");
28     cout << "terminate your input with cntrl-D\n\n";
29     while(cin.getline(buf, 511)) {
30     if (buf[0] == '.') sio << '.';
31     sio << buf << "\r\n";
32     }
33     sio << "\r\n.\r\n" << flush;
34     send_cmd(sio, 0);
35    
36    
37     send_cmd(sio, "HELP");
38    
39     send_cmd(sio, "QUIT");
40    
41     return 0;
42     }
43    
44     void send_cmd(iosockstream& s, const char* cmd)
45     {
46     if (cmd) {
47     s << cmd << "\r\n" << flush;
48     }
49     get_text (s);
50     }
51    
52     void get_text(iosockstream& s)
53     {
54     char buf[256];
55     int tmo = s->recvtimeout(1); // wait for 1 sec before timing out
56     while ( s.getline(buf, 255) ) {
57     if (buf[0] == '.' && buf[1] == '\r' && buf[2] == '\n') break;
58     cout << buf << endl;
59     }
60     if ( !s->is_eof() ) s.clear();
61     s->recvtimeout(tmo); //reset timeout to the previous value
62     }