00001
00085 #define DNSSERVERIP "192.168.192.2"
00086 #define INETSERVER "www.kornet.net"
00087 #define INETSERVERPORT 80
00088 #define INETURL "/"
00089 #define MY_MAC {0x00,0x06,0x98,0x20,0x00,0x00}
00090 #define MY_IP "192.168.192.100"
00091 #define MY_MASK "255.255.255.0"
00092 #define MY_GATE "192.168.192.3"
00093
00094 #include <string.h>
00095 #include <stdio.h>
00096 #include <io.h>
00097
00098 #include <dev/board.h>
00099
00100 #include <sys/heap.h>
00101 #include <sys/thread.h>
00102 #include <sys/timer.h>
00103 #include <sys/socket.h>
00104 #include <sys/confnet.h>
00105
00106 #include <arpa/inet.h>
00107 #include <net/route.h>
00108 #include <netdb.h>
00109
00110 #include <pro/dhcp.h>
00111
00112 static char buff[1024];
00113 static u_char my_mac[] = MY_MAC;
00114
00115
00116
00117
00118
00119 int main(void)
00120 {
00121 u_long baud = 115200;
00122 TCPSOCKET *sock;
00123 FILE *stream;
00124 u_long rip;
00125 u_long ip_addr;
00126 int bite;
00127 size_t rc;
00128 size_t len;
00129 u_long start_time;
00130 u_long total_bytes;
00131
00132
00133
00134
00135 NutRegisterDevice(&DEV_DEBUG, 0, 0);
00136 freopen(DEV_DEBUG_NAME, "w", stdout);
00137 _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
00138 puts("\nInetQuery 1.0");
00139
00140
00141
00142
00143 puts("Configuring Ethernet interface");
00144 NutRegisterDevice(&DEV_ETHER, 0, 0);
00145
00146
00147
00148
00149 if (NutDhcpIfConfig("eth0", 0, 60000) && NutDhcpIfConfig("eth0", my_mac, 60000)) {
00150
00151
00152
00153 ip_addr = inet_addr(MY_IP);
00154 NutNetIfConfig("eth0", my_mac, ip_addr, inet_addr(MY_MASK));
00155 NutIpRouteAdd(0, 0, inet_addr(MY_GATE), &DEV_ETHER);
00156 NutDnsConfig(0, 0, inet_addr(DNSSERVERIP));
00157 } else
00158 ip_addr = confnet.cdn_ip_addr;
00159 printf("%s ready\n", inet_ntoa(ip_addr));
00160
00161
00162
00163
00164
00165 if ((rip = NutDnsGetHostByName(INETSERVER)) != 0) {
00166
00167
00168
00169
00170 if ((sock = NutTcpCreateSocket()) != 0) {
00171
00172
00173
00174
00175 printf("Connecting %s:%u\r\n", inet_ntoa(rip), INETSERVERPORT);
00176 if (NutTcpConnect(sock, rip, INETSERVERPORT) == 0) {
00177
00178
00179
00180
00181 if ((stream = _fdopen((int) sock, "r+b")) != 0) {
00182
00183
00184
00185 fprintf(stream, "GET %s HTTP/1.0\r\n", INETURL);
00186 fputs("User-Agent: Ethernut [en] (NutOS)\r\n", stream);
00187 fputs("\r\n", stream);
00188 fflush(stream);
00189
00190
00191
00192
00193 start_time = NutGetTickCount();
00194 total_bytes = 0;
00195
00196
00197
00198
00199 while (fgets(buff, sizeof(buff), stream)) {
00200 puts(buff);
00201 total_bytes += strlen(buff);
00202 }
00203 printf("Transfered %lu bytes in %lu seconds\n", total_bytes, (NutGetTickCount() - start_time) / 16UL);
00204 fclose(stream);
00205 } else
00206 puts("Creating stream device failed");
00207
00208 } else {
00209 printf("Bad news, %s refuses the connection.\n", INETSERVER);
00210 }
00211 printf("Disconnecting %s:%u\n", inet_ntoa(rip), INETSERVERPORT);
00212 NutTcpCloseSocket(sock);
00213 }
00214
00215 NutSleep(5000);
00216
00217
00218
00219
00220 if ((sock = NutTcpCreateSocket()) != 0) {
00221
00222
00223
00224
00225 printf("Connecting %s:%u\r\n", inet_ntoa(rip), INETSERVERPORT);
00226 if (NutTcpConnect(sock, rip, INETSERVERPORT) == 0) {
00227
00228
00229
00230
00231
00232 strcpy(buff, "GET " INETURL " HTTP/1.0\r\nUser-Agent: Ethernut [en] (NutOS)\r\n\r\n");
00233 len = (int) strlen(buff);
00234 for (rc = 0; rc < len; rc += bite)
00235 if ((bite = NutTcpSend(sock, buff + rc, len - rc)) <= 0)
00236 break;
00237
00238
00239
00240
00241 start_time = NutGetTickCount();
00242 total_bytes = 0;
00243
00244
00245
00246
00247 while ((bite = NutTcpReceive(sock, buff, sizeof(buff) - 1)) > 0) {
00248 total_bytes += bite;
00249 buff[bite] = 0;
00250 puts(buff);
00251 }
00252 printf("Transfered %lu bytes in %lu seconds\n", total_bytes, (NutGetTickCount() - start_time) / 16UL);
00253 } else {
00254 printf("Bad news, %s refuses the connection.\n", INETSERVER);
00255 }
00256 printf("Disconnecting %s:%u\n", inet_ntoa(rip), INETSERVERPORT);
00257 NutTcpCloseSocket(sock);
00258 }
00259 } else
00260 printf("Great news, %s has been removed!\n", INETSERVER);
00261
00262 for (;;)
00263 NutSleep(1000);
00264 }