PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : web Forumal ausfüllen



bugyc66
01.02.2009, 10:23
Hallo Liebe FH

Nun Ich kenne mich mit Socket (Webprogrammierung) nicht so aus.

Nun Ich Will ein Programm dem ich eingeben kann was ins Formular eingegeben wird Dann will ich aber das Die nächste seite mir Wieder ausgegeben wird.

Hat jemand Etwas Dazu oder nicht?
Ich komme nicht weiter Kann sein das ich mich Blöde anstelle oder Die sache nicht raffe.

naja hat jemand Etwas Dies bezüglich für mich?

Grüsse bugyc66

ps: Ich Hab http://www.c-worker.ch/index.php hir Gelesen aber da fin ich nichts dazu.

Grüsse bugyc66

otto
01.02.2009, 10:26
Nun Ich Will ein Programm dem ich eingeben kann was ins Formular eingegeben wird Dann will ich aber das Die nächste seite mir Wieder ausgegeben wird.


= ??
Versteh ich jetzt nicht so ganz, erklär mal genauer.
Und in welcher Sprache willst du den etwas ''programmieren'' ??

bugyc66
01.02.2009, 10:39
au sorry das hab ich Vergessen.

Nun es ist einfach
Ich Will das du in dem Programm ein Giebst zumbeispiel
name = Bugyc66
usoweiter
Das ist ein Test
Daten werden gesenden

danach werden die daten gesenden und dan giebt es doch immer diese seiten wo heist dateien gesenden

die will ich das sie dan wieder auf der konsole ankomt.


so zum einen noch ein anderes beispiel



Ich Gebe das suchwort ein zbs Tourfox
dan wird gesenden (zbs Google)
danach die Gefundenen links werden wieder im cmd ausgegenen.
(Robot (crawler Basierend))

das ganze solte in C sein da es die Sprache ist die ich einigermasen behesrsche solte eben ein Projekt werden etwas wie ein suchrobot zu programmieren.

Hoffe es ist jetzt alles

HaCk & CrAcK
01.02.2009, 10:45
Also möchtest du ein Seite erstellen indem ein Formular ist, der von einem anderem User
aufgefüllt werden muss?
Und wen er ihn ausgefüllt hat soll dann eine Seite kommen in der Steht, " Formular abgeschickt " ??


Wen du das meinst dann kanst du das mit PHP machen glaube ich :)

bugyc66
01.02.2009, 10:57
Also möchtest du ein Seite erstellen indem ein Formular ist, der von einem anderem User
aufgefüllt werden muss?
Und wen er ihn ausgefüllt hat soll dann eine Seite kommen in der Steht, " Formular abgeschickt " ??


Wen du das meinst dann kanst du das mit PHP machen glaube ich :)


Nein das hab ich schon.

Ich will

1 Exe die baut eine Verbindung auf zu einem server deiner wahl (Google.de)
2) Du wird aufgefordert dein suchbegriff einzugeben
3) dein suchbegriff wird von der EXE aus Gesenden und dan bei google verarbeitet
4) Google spuckt immer suchergebnisse aus Die werden Dan Runtergeladen un In der Exe Datei ausgegeben (ZB gespeichert)

Ich hab im netz den namen Crowler Gefunden hab aber nichts näheres ich weis einfach das es ein suchrobot ist.
und soetwas will ich Cooden Ich weis nicht ob ich falsche forstellungen habe was das angeht.

Ich will als resultat meiner Programmier arbeit in C ein suchrobot als resultat haben und ich will nicht den irgend wo runter laden ich will einen selbst cooden und brauche infos links Tuts dazu um einen selbst zu machen.

Grüsse bugyc66

ps: ich hoffe das mann jetzt verstanden hat was ich meine

blackberry
01.02.2009, 11:33
Ich denke du solltest dir einfach mal das HTTProtokoll anschauen...

So sucht man zB. auf Google:
1) Verbindung zum Server aufnehmen
2) Folgenden Request senden:

GET /search?hl=en&q=http HTTP/1.1\r\n
Host: www.google.com\r\n
User-Agent: BlackBerry\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
\r\n\r\n
\r\n stehen für die jeweiligen Escape-Sequenzen,
hier umgebrochene Zeilen stehen nicht für einen Zeilenumbruch - dafür sind die "\r\n" da...
3) Antwort des Servers speichern
4) Antwort analysieren


mfG. BlackBerry

bugyc66
01.02.2009, 12:13
Ich denke du solltest dir einfach mal das HTTProtokoll anschauen...

So sucht man zB. auf Google:
1) Verbindung zum Server aufnehmen
2) Folgenden Request senden:

GET /search?hl=en&q=http HTTP/1.1\r\n
Host: www.google.com\r\n
User-Agent: BlackBerry\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
\r\n\r\n
\r\n stehen für die jeweiligen Escape-Sequenzen,
hier umgebrochene Zeilen stehen nicht für einen Zeilenumbruch - dafür sind die "\r\n" da...
3) Antwort des Servers speichern
4) Antwort analysieren


mfG. BlackBerry

danke das Bringt mich ein Stück weiter mal schauen wenn wider problehme auftauchen meld ich mich wieder

So jetzt schnall ichs nicht

ich hab jetzt folgender Cood
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
const int BUFFER_SIZE = 65535;
u_long dns(const char *host){
struct hostent *hp;
u_long host_ip;
host_ip = inet_addr(host);
if(host_ip == INADDR_NONE){
hp = gethostbyname(host);
if(!hp){
return 0;
}else{
host_ip = *(u_long *)hp->h_addr;
}
}
return host_ip;
}
char * HTTPRequest(const char* server, int port, char * request)
{
WSADATA w;
int res = WSAStartup(MAKEWORD(2,0), &w);
#ifdef DEBUG
if(res != 0)
{
printf("Winsock 2 konnte nicht gestartet werden!\n");
}
else
{
printf("Winsock 2 gestartet!\n");
}
#endif
int Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
#ifdef DEBUG
if(Socket == -1)
{
printf("Socket konnte nicht erstellt werden!\n");
}
else
{
printf("Socket wurde erstellt!\n");
}
#endif
u_long ip = dns(server);
SOCKADDR_IN service;
service.sin_family = AF_INET;
service.sin_port = htons(port);
service.sin_addr.s_addr = ip;
res = connect(Socket, (SOCKADDR *)(&service), sizeof(service));
#ifdef DEBUG
if(res == -1)
{
printf("Verbindung fehlgeschlagen!\n");
}
else
{
printf("Verbindung erfolgreich!\n");
}
#endif
res = send(Socket, request, strlen(request), 0);
char *buffer = (char *) malloc(BUFFER_SIZE);
res = recv(Socket, buffer, sizeof(buffer) - 1, 0);
buffer[res] = '\0';
WSACleanup();
return buffer;
}
int main()
{
char request[] =
"GET /search?hl=de&q=http+request&btnG=Google-Suche&meta= HTTP/1.1\r\n"
"User-Agent: inet\r\n"
"Host: www.google.de\r\n (http://www.google.de\r\n)"
"Accept: */*\r\n"
"Accept-Encoding: text/html\r\n\r\n";
char * temp = HTTPRequest("www.google.de (http://www.google.de)", 80, request);
puts(temp);
// wichtig: mit free() wieder freigeben
free(temp);
return 0;
}

so wen ich ihn ausführe giebt er nur htt aus und ich weis nicht wiso
(cood ist nicht von mir ist aus dem netzt)
Kann mir einer Helfen (hat Vileicht jemand Litaratur dazu)

Grüsse bugyc66

blackberry
01.02.2009, 14:43
Folgender Code funktioniert:

/*
gcc -ansi -W -Wall -o search search.c
*/

#ifdef _WIN32
#include <winsock2.h>
#define CLOSESOCKET(x) closesocket(x)
#else
#include <arpa/inet.h>
#include <netdb.h>
#define CLOSESOCKET(x) close(x)
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>

#define HOST "www.google.com"
#define PORT 80
#define SEARCH "http"
#define OUTPUT "search.html"
#define BUFFSZ 100


void putError(const char *, ...);
int vsnprintf(char *, size_t, const char *, va_list);

int main(void)
{
int sock;
int recved;
char buffer[BUFFSZ + 1];
const char *request =
"GET /search?hl=en&q=" SEARCH " HTTP/1.1\r\n"
"Host: " HOST "\r\n"
"User-Agent: BlackBerry\r\n"
"Connection: close\r\n"
"\r\n";
struct sockaddr_in addr;
struct hostent *dns;
FILE *fp;

#ifdef _WIN32
WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 0), &wsa) == -1)
putError("couldn't start winsock");
#endif

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
putError("couldn't create a socket");

if (!(dns = gethostbyname(HOST)))
putError("couldn't resolve the correct ip for '" HOST "'");

addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
memcpy(&addr.sin_addr.s_addr, dns->h_addr_list[0], 4);

if (connect(sock, (struct sockaddr *) &addr, sizeof(addr)) == -1)
putError("couldn't connect to '" HOST "'");

send(sock, request, strlen(request), 0);

if (!(fp = fopen(OUTPUT, "wb")))
putError("couldn't write to '" OUTPUT "'");

memset(buffer, 0, BUFFSZ + 1);
while(send(sock, "", 0, 0) != -1)
{
if ((recved = recv(sock, buffer, BUFFSZ, 0)) <= 0)
break;
fwrite(buffer, 1, recved, fp);
}

fclose(fp);
CLOSESOCKET(sock);
#ifdef _WIN32
WSACleanup();
#endif

return 0;
}

void putError(const char *errmsg, ...)
{
char buffer[400];
va_list arg;
va_start(arg, errmsg);
vsnprintf(buffer, sizeof(buffer) - 1, errmsg, arg);
va_end(arg);
printf("[Error]\t\t%s\n", buffer);
exit(0);
}

PS: es heißt "Code" und nicht "cood"!

bugyc66
01.02.2009, 15:05
Folgender Code funktioniert:

/*
gcc -ansi -W -Wall -o search search.c
*/

#ifdef _WIN32
#include <winsock2.h>
#define CLOSESOCKET(x) closesocket(x)
#else
#include <arpa/inet.h>
#include <netdb.h>
#define CLOSESOCKET(x) close(x)
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>

#define HOST "www.google.com"
#define PORT 80
#define SEARCH "http"
#define OUTPUT "search.html"
#define BUFFSZ 100


void putError(const char *, ...);
int vsnprintf(char *, size_t, const char *, va_list);

int main(void)
{
int sock;
int recved;
char buffer[BUFFSZ + 1];
const char *request =
"GET /search?hl=en&q=" SEARCH " HTTP/1.1\r\n"
"Host: " HOST "\r\n"
"User-Agent: BlackBerry\r\n"
"Connection: close\r\n"
"\r\n";
struct sockaddr_in addr;
struct hostent *dns;
FILE *fp;

#ifdef _WIN32
WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 0), &wsa) == -1)
putError("couldn't start winsock");
#endif

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
putError("couldn't create a socket");

if (!(dns = gethostbyname(HOST)))
putError("couldn't resolve the correct ip for '" HOST "'");

addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
memcpy(&addr.sin_addr.s_addr, dns->h_addr_list[0], 4);

if (connect(sock, (struct sockaddr *) &addr, sizeof(addr)) == -1)
putError("couldn't connect to '" HOST "'");

send(sock, request, strlen(request), 0);

if (!(fp = fopen(OUTPUT, "wb")))
putError("couldn't write to '" OUTPUT "'");

memset(buffer, 0, BUFFSZ + 1);
while(send(sock, "", 0, 0) != -1)
{
if ((recved = recv(sock, buffer, BUFFSZ, 0)) <= 0)
break;
fwrite(buffer, 1, recved, fp);
}

fclose(fp);
CLOSESOCKET(sock);
#ifdef _WIN32
WSACleanup();
#endif

return 0;
}

void putError(const char *errmsg, ...)
{
char buffer[400];
va_list arg;
va_start(arg, errmsg);
vsnprintf(buffer, sizeof(buffer) - 1, errmsg, arg);
va_end(arg);
printf("[Error]\t\t%s\n", buffer);
exit(0);
}

PS: es heißt "Code" und nicht "cood"!

hast recht danke Für den Code Jetzt hab ichs gerafft wie das Funzen soll.

-=RaZzor=-
01.02.2009, 15:11
Folgender Code funktioniert:

/*
gcc -ansi -W -Wall -o search search.c
*/

#ifdef _WIN32
#include <winsock2.h>
#define CLOSESOCKET(x) closesocket(x)
#else
#include <arpa/inet.h>
#include <netdb.h>
#define CLOSESOCKET(x) close(x)
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>

#define HOST "www.google.com"
#define PORT 80
#define SEARCH "http"
#define OUTPUT "search.html"
#define BUFFSZ 100


void putError(const char *, ...);
int vsnprintf(char *, size_t, const char *, va_list);

int main(void)
{
int sock;
int recved;
char buffer[BUFFSZ + 1];
const char *request =
"GET /search?hl=en&q=" SEARCH " HTTP/1.1\r\n"
"Host: " HOST "\r\n"
"User-Agent: BlackBerry\r\n"
"Connection: close\r\n"
"\r\n";
struct sockaddr_in addr;
struct hostent *dns;
FILE *fp;

#ifdef _WIN32
WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 0), &wsa) == -1)
putError("couldn't start winsock");
#endif

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
putError("couldn't create a socket");

if (!(dns = gethostbyname(HOST)))
putError("couldn't resolve the correct ip for '" HOST "'");

addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
memcpy(&addr.sin_addr.s_addr, dns->h_addr_list[0], 4);

if (connect(sock, (struct sockaddr *) &addr, sizeof(addr)) == -1)
putError("couldn't connect to '" HOST "'");

send(sock, request, strlen(request), 0);

if (!(fp = fopen(OUTPUT, "wb")))
putError("couldn't write to '" OUTPUT "'");

memset(buffer, 0, BUFFSZ + 1);
while(send(sock, "", 0, 0) != -1)
{
if ((recved = recv(sock, buffer, BUFFSZ, 0)) <= 0)
break;
fwrite(buffer, 1, recved, fp);
}

fclose(fp);
CLOSESOCKET(sock);
#ifdef _WIN32
WSACleanup();
#endif

return 0;
}

void putError(const char *errmsg, ...)
{
char buffer[400];
va_list arg;
va_start(arg, errmsg);
vsnprintf(buffer, sizeof(buffer) - 1, errmsg, arg);
va_end(arg);
printf("[Error]\t\t%s\n", buffer);
exit(0);
}

PS: es heißt "Code" und nicht "cood"!

Nice

aKiller47
01.02.2009, 18:23
Kannst es auch über POST machen, ii noch ne ganz gute übung. Eingabefeld-Namen kannst im Quelltext finden.

mfG AKiller47