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 (24 years, 10 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

# Content
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 }