Просмотр полной версии : Исходник для работы с HTTP (C++)
может есть у кого сабж? нужен просто пример (желательно консоль) для отправки данных на серв и получение ответа. Например логин на сайт и получение удачно\неудочно ... и в соответствии с этим выполняем действие... если у кого есть поделитесь :)
POS_troi
13.07.2009, 11:38
http://forum.sources.ru/index.php?showtopic=166220
посмотри
и вот еще в исходниках валялось
#include <stdio.h>
#include <winsock.h>
// Function prototype
void StreamClient(char *szServer, short nPort, char *szMessage);
// Helper macro for displaying errors
#define PRINTERROR(s) \
fprintf(stderr,"\n%: %d\n", s, WSAGetLastError())
////////////////////////////////////////////////////////////
void main(int argc, char **argv)
{
WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
int nRet;
short nPort;
//
// Check for the host and port arguments
//
if (argc != 4)
{
fprintf(stderr,"\nSyntax: client ServerName PortNumber Message\n");
return;
}
nPort = atoi(argv[2]);
//
// Initialize WinSock and check the version
//
nRet = WSAStartup(wVersionRequested, &wsaData);
//
// Go do the stuff a stream client does
//
StreamClient(argv[1], nPort, argv[3]);
//
// Release WinSock
//
WSACleanup();
}
////////////////////////////////////////////////////////////
void StreamClient(char *szServer, short nPort, char *szMessage)
{
printf("\nStream Client connecting to server: %s on port: %d",
szServer, nPort);
//
// Find the server
//
LPHOSTENT lpHostEntry;
lpHostEntry = gethostbyname(szServer);
if (lpHostEntry == NULL)
{
PRINTERROR("gethostbyname()");
return;
}
//
// Create a TCP/IP stream socket
//
SOCKET theSocket;
theSocket = socket(AF_INET, // Address family
SOCK_STREAM, // Socket type
IPPROTO_TCP); // Protocol
if (theSocket == INVALID_SOCKET)
{
PRINTERROR("socket()");
return;
}
//
// Fill in the address structure
//
SOCKADDR_IN saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
// ^ Server's address
saServer.sin_port = htons(nPort); // Port number from command line
//
// connect to the server
//
int nRet;
nRet = connect(theSocket, // Socket
(LPSOCKADDR)&saServer, // Server address
sizeof(struct sockaddr));// Length of server address structure
if (nRet == SOCKET_ERROR)
{
PRINTERROR("socket()");
closesocket(theSocket);
return;
}
//
// Send data to the server
//
char szBuf[256];
// strcpy(szBuf, "From the Client");
nRet = send(theSocket, // Connected socket
szMessage, // Data buffer
strlen(szMessage), // Length of data
0); // Flags
if (nRet == SOCKET_ERROR)
{
PRINTERROR("send()");
closesocket(theSocket);
return;
}
//
// Wait for a reply
//
nRet = recv(theSocket, // Connected socket
szBuf, // Receive buffer
sizeof(szBuf)+1, // Size of receive buffer
0); // Flags
if (nRet == SOCKET_ERROR)
{
PRINTERROR("recv()");
closesocket(theSocket);
return;
}
//
// Display the received data
//
printf("\nData received: %s", szBuf);
closesocket(theSocket);
return;
}
это я так понял TCP/IP ? я не силен в С++ если можно то конкретно сорс по отправке ПОСТ на сервер. с меня +++, заранее спасибо
POS_troi
13.07.2009, 12:17
как вариант - посмотри вот это..
если не то и никто не скинет еще ченить , то когда прийду домой, скину исходник програмулины (писал для партнерки одной, там все и GET и POST)
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#include <ctype.h>
#define PORT 80 // Порт, через который идет подключение к серверу....21,80,25,110 и т.п.
#define SERVERADDR "77.91.229.20" // Адрес сервера
int main ( int argc, char* argv [ ] )
{
WSADATA wd;
char buff[10000];
char buff2[9000]= {
"POST /member.php HTTP/1.0\r\n"
"Host: www.haddan.ru\r\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.13) Gecko/20080311 AdCentriaIM/1.7 Firefox/2.0.0.13\r\n"
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Referer: http://www.haddan.ru/\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 33\r\n\r\n"
"username=USER&passwd=PASS"
};
printf ( "TCP Client \n" ); // ну, тут и так понятно
if ( WSAStartup ( 0x202, &wd ) )
{
printf ( " WSAStart error %d \n ", WSAGetLastError ( ) );
return -1;
}
SOCKET sock ;
sock=socket ( AF_INET, SOCK_STREAM, 0 );
if ( sock < 0 )
{
printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) );
return -1;
}
sockaddr_in dest_addr;
dest_addr.sin_family=AF_INET; //инет коннектинг
dest_addr.sin_port=htons ( PORT ); //порт
HOSTENT *hst; // хост
if( inet_addr(SERVERADDR) != INADDR_NONE )
dest_addr.sin_addr.S_un.S_addr = inet_addr(SERVERADDR);
else if( hst=gethostbyname ( SERVERADDR ) )
( ( unsigned long * ) &dest_addr.sin_addr )[0]=((unsigned long** )hst->h_addr_list)[0][0];
else
{
printf( "invalid address %s \n", SERVERADDR );
closesocket( sock ) ;
WSACleanup();
return -1;
}
if(connect( sock, (sockaddr *)&dest_addr, sizeof(dest_addr) ))
{
printf (" Connect error %d \n ", WSAGetLastError ( ) );
return -1;
}
//sprintf( buff2, "GET /room/func/mine.php HTTP/1.1\r\nHost: haddan.ru\r\nConnection: Close\r\n\r\n");
send( sock, buff2, sizeof(buff2), 0);
recv( sock, buff, sizeof(buff)-1, 0 );
//for(int i=0; i < strlen(buff); i++)
// if(isalnum(buff[i]) || buff[i] == '<'|| buff[i] == '>' || buff[i] == '/')
printf("%s",buff );
// else
// continue;
printf("\n");
printf ("Connection with %s succesfully. quit - quit" , SERVERADDR );
//int nsize;
/*while( ( nsize = recv( sock, buff, sizeof(buff)-1, 0 ) ) != SOCKET_ERROR )
{
buff[ nsize ] =0;
printf ( " S=>C: %s ", buff ) ;
printf ( "S<=C: " ) ;
fgets ( &buff [0], sizeof( buff )-1, stdin );
if ( !strcmp ( &buff[0], "quit\n" ) )
{
printf ( " Exit " );
closesocket ( sock ) ; //выход правильный
WSACleanup() ;
return 0;
}
send ( sock, &buff [ 0 ], nsize, 0 ) ;
}*/
//printf ( " Recv error %d \n", WSAGetLastError ( ) );
//closesocket ( sock ) ;
//WSACleanup ( ) ;
return 0;
}
как вариант - посмотри вот это..
если не то и никто не скинет еще ченить , то когда прийду домой, скину исходник програмулины (писал для партнерки одной, там все и GET и POST)
спс, буду ждать
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot