Помощь - Поиск - Пользователи - Календарь
Полная версия: Visual C++. Работа через сокеты, помогите разобраться в программе
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
GrabbeR
Суть данного консольного приложения: банить юзверей правами модера (определение через куки)

Ошибка в строке
if(SOCKET_ERROR==send(s,request,sizeof(request),0))

error C2664: send: невозможно преобразовать параметр 2 из "std::string" в "const char *"

как его преобразовать? не могу вдуплить
_____________________________________

#include <stdafx.h>
#include <iostream>
#include <winsock2.h>
#include <string>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
using namespace std;
//составление запроса
int user_id;
bool end = true;
while(end){
string request = "User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.52 Host: connect.ua Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Encoding: gzip, deflate Referer: http://connect.ua/user-";
string banned = "";
cout<<"Введите номер юзера\n";
cin>>user_id;
cout<<"Введите причину бана\n";
cin>>banned;
request += user_id;
request += " Cookie: __gads=ID=12c4600e972d2dbc:T=1317417221:S=ALNI_Mbk3mjIAgEVbwderkj6M7gQtjwgWQ; snimiSlivki=1; hide_speakup2=1; hide_richag2=1; health=1; site_id=171; english_ad=1; PHPSESSID=7b7793a69768f2772ddd0f1835a66b50; jjot_sort=1; people-filter-form[age_start]=18; people-filter-form[age_end]=23; people-filter-form[sex]=f; people-filter-form[city_id]=5001; v=ok; holder=1; b=b; __utma=57213173.709094120.1320058983.1320171944.1320178906.12; __utmb=57213173.59.9.1320180543308; __utmc=57213173; __utmz=57213173.1320058983.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=57213173.|1=authenticated=yes=1,2=gender=m=1,3=age=19=1,4=city=Kiev=1,5=s ignup=19.09.2008=1; credentials=454562%7C156c4d4ebf8ae5f8315b76a457d4342c Content-Length: 121 Content-Type: application/x-www-form-urlencoded X-Requested-With: XMLHttpRequest Accept: application/json, text/javascript, */* AJAX: 1 Content-Transfer-Encoding: binary";

SOCKET s;
if(INVALID_SOCKET==(s=socket(AF_INET,SOCK_STREAM,0)))
{
int error=WSAGetLastError();cout<<"1";
}
hostent *hn;
if (NULL==(hn=gethostbyname("connect.ua")))
{
cout<<"2";
cin.get();
}
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=*(DWORD*)hn->h_addr_list[0];
addr.sin_port=htons(80);
if(SOCKET_ERROR==(connect(s,(sockaddr*)&addr,sizeof(addr))))
{
int error=WSAGetLastError();
cout<<"3";
cin.get();
}
if(SOCKET_ERROR==send(s,request,sizeof(request),0))
{
int error=WSAGetLastError();
cout<<"4";
cin.get();
};
Sleep(1);
closesocket(s);
return 0;
}
cout<<"Забанен\n\r";
cout<<"\n";
_getch();
}
}
IUnknown
if(SOCKET_ERROR==send(s, request.c_str(), request.length(), 0))
должно преобразовать. Обрати внимание, пользоваться sizeof(std::string) не надо, я тебе и так скажу, получишь 4. У строки есть длина, вот ее и используй...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.