#define DNSSERVERIP "192.168.192.2"
#define INETSERVER "www.kornet.net"
#define INETSERVERPORT 80
#define INETURL "/"
#define MY_MAC {0x00,0x06,0x98,0x20,0x00,0x00}
#define MY_IP "192.168.192.100"
#define MY_MASK "255.255.255.0"
#define MY_GATE "192.168.192.3"
#include <string.h>
#include <stdio.h>
#include <io.h>
#include <dev/debug.h>
#ifdef ETHERNUT2
#include <dev/lanc111.h>
#else
#include <dev/nicrtl.h>
#endif
#include <sys/heap.h>
#include <sys/thread.h>
#include <sys/timer.h>
#include <sys/socket.h>
#include <sys/confnet.h>
#include <arpa/inet.h>
#include <net/route.h>
#include <netdb.h>
#include <pro/dhcp.h>
static u_char buff[1024];
static u_char my_mac[] = MY_MAC;
int main(void)
{
u_long baud = 115200;
TCPSOCKET *sock;
FILE *stream;
u_long rip;
u_long ip_addr;
int bite;
size_t rc;
size_t len;
u_long start_time;
u_long total_bytes;
NutRegisterDevice(&devDebug0, 0, 0);
freopen("uart0", "w", stdout);
_ioctl(_fileno(stdout), UART_SETSPEED, &baud);
puts("\nInetQuery 1.0");
puts("Configuring Ethernet interface");
NutRegisterDevice(&DEV_ETHER, 0x8300, 5);
if (NutDhcpIfConfig("eth0", 0, 60000) && NutDhcpIfConfig("eth0", my_mac, 60000)) {
ip_addr = inet_addr(MY_IP);
NutNetIfConfig("eth0", my_mac, ip_addr, inet_addr(MY_MASK));
NutIpRouteAdd(0, 0, inet_addr(MY_GATE), &DEV_ETHER);
NutDnsConfig(0, 0, inet_addr(DNSSERVERIP));
} else
ip_addr = confnet.cdn_ip_addr;
printf("%s ready\n", inet_ntoa(ip_addr));
if ((rip = NutDnsGetHostByName(INETSERVER)) != 0) {
if ((sock = NutTcpCreateSocket()) != 0) {
printf("Connecting %s:%u\r\n", inet_ntoa(rip), INETSERVERPORT);
if (NutTcpConnect(sock, rip, INETSERVERPORT) == 0) {
if ((stream = _fdopen((int) sock, "r+b")) != 0) {
fprintf(stream, "GET %s HTTP/1.0\r\n", INETURL);
fputs("User-Agent: Ethernut [en] (NutOS)\r\n", stream);
fputs("\r\n", stream);
fflush(stream);
start_time = NutGetTickCount();
total_bytes = 0;
while (fgets(buff, sizeof(buff), stream)) {
puts(buff);
total_bytes += strlen(buff);
}
printf("Transfered %lu bytes in %lu seconds\n", total_bytes, (NutGetTickCount() - start_time) / 16UL);
fclose(stream);
} else
puts("Creating stream device failed");
} else {
printf("Bad news, %s refuses the connection.\n", INETSERVER);
}
printf("Disconnecting %s:%u\n", inet_ntoa(rip), INETSERVERPORT);
NutTcpCloseSocket(sock);
}
NutSleep(5000);
if ((sock = NutTcpCreateSocket()) != 0) {
printf("Connecting %s:%u\r\n", inet_ntoa(rip), INETSERVERPORT);
if (NutTcpConnect(sock, rip, INETSERVERPORT) == 0) {
strcpy(buff, "GET " INETURL " HTTP/1.0\r\nUser-Agent: Ethernut [en] (NutOS)\r\n\r\n");
len = (int) strlen(buff);
for (rc = 0; rc < len; rc += bite)
if ((bite = NutTcpSend(sock, buff + rc, len - rc)) <= 0)
break;
start_time = NutGetTickCount();
total_bytes = 0;
while ((bite = NutTcpReceive(sock, buff, sizeof(buff) - 1)) > 0) {
total_bytes += bite;
buff[bite] = 0;
puts(buff);
}
printf("Transfered %lu bytes in %lu seconds\n", total_bytes, (NutGetTickCount() - start_time) / 16UL);
} else {
printf("Bad news, %s refuses the connection.\n", INETSERVER);
}
printf("Disconnecting %s:%u\n", inet_ntoa(rip), INETSERVERPORT);
NutTcpCloseSocket(sock);
}
} else
printf("Great news, %s has been removed!\n", INETSERVER);
for (;;)
NutSleep(1000);
}