20. september 2003 - 01:10
Der er
21 kommentarer og
2 løsninger
Kalde en asp side på webserver med en clientsocket i c++
Mit lille projekt omhandler at jeg skal via en client socket, kalde en asp side på webserveren, som så skal behandle en række medsendte parametre.
Jeg havde forestillet mig noget i denne retning(uddrag af kode):
char tekst_buffer[]="
http://10.0.0.1/test.asp?para1+para2+para3";------------------------------------------
#define KLIENT_PORT 80
Server_Adr.sin_family = AF_INET;
Server_Adr.sin_port = htons(KLIENT_PORT);
Server_Adr.sin_addr.s_addr = inet_addr("10.0.0.1");
-----------------------------------------------------
char tekst_buffer[]="
http://10.0.0.1/test.asp?para1+para2+para3";res = send(Server_Sock, tekst_buffer, Meld_Len, 0);
------------------------------------------------------
Men den kan ikke fange det på webserveren. Er jeg helt galt på den eller hva? Det skal siges at jeg først prøvede at kalde en helt alm html fil på webserveren og det virkede heller ikke.
(char tekst_buffer[]="
http://10.0.0.1/test.htm";)
Er der nogen som kan hjælpe.
Venlig hilsen TOM.
20. september 2003 - 19:16
#14
Og svaret på næste spørgsmål (hvordan laver jeg base64 encoding):
#include <string.h>
struct sixbits { unsigned sb1:6;
unsigned sb2:6;
unsigned sb3:6;
unsigned sb4:6; };
union overlay { struct sixbits sixs;
char eigths[3]; };
char enc_b64vals[64] = { 'A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X',
'Y','Z','a','b','c','d','e','f',
'g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v',
'w','x','y','z','0','1','2','3',
'4','5','6','7','8','9','+','/' };
void enc_normal2b64(char *s1,int l1,char *s2,int *l2)
{
int i,j;
union overlay Cvt;
char *p = s1;
int ltmp = (l1*8+5)/6;
int extra = 3-(ltmp+3)%4;
int linlen = 0;
(*l2) = 0;
// loop through string
for(i=0;i<ltmp;i=i+4) {
// convert 8->6 bit
Cvt.eigths[2]=(((p-s1)<l1)?(*p):0);
p++;
Cvt.eigths[1]=(((p-s1)<l1)?(*p):0);
p++;
Cvt.eigths[0]=(((p-s1)<l1)?(*p):0);
p++;
s2[*l2]=enc_b64vals[Cvt.sixs.sb4];
(*l2)++;
s2[*l2]=enc_b64vals[Cvt.sixs.sb3];
(*l2)++;
s2[*l2]=enc_b64vals[Cvt.sixs.sb2];
(*l2)++;
s2[*l2]=enc_b64vals[Cvt.sixs.sb1];
(*l2)++;
// append newline if line too long
linlen=linlen+4;
if(linlen>75) {
s2[*l2]='\n';
(*l2)++;
linlen=0;
}
}
// append 0,1 or 2 "="
(*l2)=(*l2)-extra;
for(j=0;j<extra;j++) {
s2[*l2]='=';
(*l2)++;
}
// append newline
s2[*l2]='\n';
(*l2)++;
return;
}
int main()
{
int l2;
char s1[100],s2[100];
strcpy(s1,"mig:hemmeligt");
enc_normal2b64(s1,strlen(s1),s2,&l2);
s2[l2]='\0';
printf("%s -> %s\n",s1,s2);
return 0;
}