Hallo,
ich verwende von Atmel den UC3 auf dem EVK1100. Außerdem die Libs von
der ASF mit dem FreeRTOS 7 und dem lwIP stack 1.4.0.
Der WebServer läuft. Das heißt, ich bekomme bereits von meinem Router
eine IP Adresse über den DHCP zugewisen und kann über diese IP auch den
Web Server aufrufen.
Jetzt möchte ich das aber umgekehrt machen. Soll heißen, ich möchte eine
Webseite im Internet aufrufen an die ich über post Daten übertrage.
Bisher habe ich das nur auf einen Lokalen Host mit get hin bekommen mit
diesem Code:
Probleme sind also:
1. wie bekomme ich aus der festen IP eine Adresse wie www.ziel.de hin?
2. Wie baue ich den POST zugiff auf?
1
/*
2
* html_request.c
3
*
4
* Created: 04.04.2015 20:35:00
5
* Author: Florian
6
*/
7
8
/* Standard includes. */
9
#include<stdio.h>
10
#include<string.h>
11
#include<stdarg.h>
12
13
#include"conf_eth.h"
14
15
/* Scheduler includes. */
16
#include"FreeRTOS.h"
17
#include"task.h"
18
19
20
21
22
#include"html_request.h"
23
#include"EthernetCom.h"
24
25
structtcp_pcb*testpcb;
26
err_terror;
27
28
voidtcp_setup(void)
29
{
30
uint32_tdata=0xdeadbeef;
31
32
ON_1_SIG_LED;
33
/* create an ip */
34
structip_addrip;
35
IP4_ADDR(&ip,192,168,0,13);//IP of my PHP server
36
37
/* create the control block */
38
testpcb=tcp_new();//testpcb is a global struct tcp_pcb
39
// as defined by lwIP
40
41
42
/* dummy data to pass to callbacks*/
43
tcp_arg(testpcb,&data);
44
/* register callbacks with the pcb */
45
46
tcp_bind(testpcb,&ip,80);
47
48
tcp_err(testpcb,tcpErrorHandler);
49
tcp_recv(testpcb,tcpRecvCallback);
50
tcp_sent(testpcb,tcpSendCallback);
51
52
53
/* now connect */
54
tcp_connect(testpcb,&ip,80,connectCallback);
55
//ON_3_SIG_LED;
56
57
}
58
59
60
/* connection established callback, err is unused and only return 0 */
1) mit einer DNS-Abfrage. Entweder, Du suchst vorher manuell die
IP-Adresse (z.B. mit nslookup www.ziel.de) oder falls dynamisch, musst
Du Dein Programm erweitern, damit es DNS-Abfragen machen kann.
2) wie es ein PC-Browser auch macht, siehe hier:
http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_POST
Im konkreten Fall würdest Du also "tcp_send_packet" anpassen, also einen
anderen String senden, der mit POST beginnt und wie im Link aufgebaut
ist.