ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/test/tsinread.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 // tsinread.cc. Test for -*- C++ -*- socket library
2     // Copyright (C) 1992,1993,1994 Gnanasekaran Swaminathan <gs4t@virginia.edu>
3     //
4     // Permission is granted to use at your own risk and distribute this software
5     // in source and binary forms provided the above copyright
6     // notice and this paragraph are preserved on all copies.
7     // This software is provided "as is" with no express or implied warranty.
8     //
9     // Version: 17Oct95 1.10
10    
11     #include <sockinet.h>
12     #include <unistd.h>
13    
14     static void process_input (iosockinet& s);
15    
16     int main()
17     {
18     sockinetbuf sin (sockbuf::sock_stream);
19    
20     sin.bind();
21    
22     cout << "localhost = " << sin.localhost() << endl
23     << "localport = " << sin.localport() << endl;
24    
25     sin.listen();
26    
27     for(;;) {
28     iosockinet s (sin.accept());
29    
30     process_input(s);
31     s->close();
32    
33     // lets use select to find out whether a socket is ready
34     if (!sin.is_readready(2)) {
35     // the socket is not ready. Let us sleep for 1 sec.
36     sleep(1);
37     }
38    
39     iosockinet s2 (sin.accept());
40     process_input(s2);
41     break; // let us get out of forever
42     }
43     return 0;
44     }
45    
46     static void process_input(iosockinet& sio)
47     {
48     char buf[256];
49     char* p = buf;
50    
51     sio >> p;
52    
53     while (*p) {
54     if (*p != '%')
55     cout << *p;
56     else
57     switch (*++p) {
58     case 'd': {
59     int i;
60     sio >> i;
61     cout << i << ' ';
62     sio << "INT ";
63     break;
64     }
65     case 'f': {
66     double d;
67     sio >> d;
68     cout << d << ' ';
69     sio << "DOUBLE ";
70     break;
71     }
72     case 's': {
73     char str[256];
74     sio >> str;
75     cout << str << ' ';
76     sio << "STRING ";
77     break;
78     }
79     case 'c': {
80     char c;
81     sio >> c;
82     cout << c << ' ';
83     sio << "CHAR ";
84     break;
85     }
86     case '%':
87     cout << '%' << ' ';
88     break;
89     default:
90     cout << '%' << *p;
91     }
92     p++;
93     }
94     sio << "received" << endl;
95     cout << endl;
96     }
97    
98