ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

30.07.2009, 21:27
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
Посмотри эту тему,
А вот, например, TCP клиент( просто коннект) - потом добавляешь хттп запросы и вперед!
Код:
Код:
#include <windows.h>
#include <winsock2.h>
#include <stdio.h>
#define REMOTE_ADDR "127.0.0.1"
#define DEF_HTTP_PORT 80
int main(void)
{
WSADATA wsd;
struct sockaddr_in addr;
if( WSAStartup( MAKEWORD(2,2),&wsd ) == 0)
{
puts("WIndows socket interface is loaded");
addr.sin_addr.s_addr = inet_addr(REMOTE_ADDR);
addr.sin_family = AF_INET;
addr.sin_port = htons(DEF_HTTP_PORT);
SOCKET lsocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if( lsocket != -1 )
{
unsigned int addrLen = sizeof(addr);
if( connect(lsocket,(SOCKADDR*)addr,addrLen ) == 0 )
{
puts("Connected to server\n");
}
else
{
printf("Error : %d\n", WSAGetLastError());
}
}
else
{
puts("Could not create socket");
}
}
else
{
puts("Could not load windows socket interface");
}
}
|
|
|

30.07.2009, 23:14
|
|
Участник форума
Регистрация: 11.09.2008
Сообщений: 107
Провел на форуме: 262809
Репутация:
21
|
|
2agrofyl2
if( connect(lsocket,(SOCKADDR*)addr,addrLen ) == 0 )
вот в этом куске кода, ошибку выдает помоги плз пишет что
cannot convert from 'sockaddr_in' to 'SOCKADDR*'
Нашел ошибку правильней
if( connect(lsocket,( struct SOCKADDR*)&addr,addrLen ) == 0 )
Последний раз редактировалось Gin; 30.07.2009 в 23:56..
|
|
|

31.07.2009, 00:08
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
Тот код я просто скопировал, не проверял.
А вот правильный, проверенный, специально для тебя:
Код:
#include <winsock2.h> //winsock header
#pragma comment( lib, "ws2_32.lib" ) //winsock lib
#include "iostream"
using namespace std;
int main()
{
cout << "Work" << endl;
char servername[]="forum.antichat.net";
int port=80;
//Загружаем ВинСок
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {//проверяем загрузилась ли
cout << "Error load winsock2" << endl;
return 0;
}
struct sockaddr_in server;
struct hostent *host = NULL;
SOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//Создаем сокет
if (sClient == INVALID_SOCKET) {//проверяем, нормально ли создался сокет
cout << "Invalid socket" << endl;
return 0;
}
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(servername);
if (server.sin_addr.s_addr == INADDR_NONE) //Если указано имя, а не айпишник
{
host = gethostbyname(servername);//пробуем его определить
if (host == NULL) {
cout << "Can't get IP by hostname..." << endl;
return 0;
}
CopyMemory(&server.sin_addr, host->h_addr_list[0],host->h_length);
}
if (connect(sClient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) {
cout << "Connect filed" << endl;
return 0;
}
//Все, подключились...-----------
int ret;
char zapros[]="GET / HTTP/1.1\r\nHost: forum.antichat.net\r\nConnection: Close\r\n\r\n";
ret=send(sClient, zapros, strlen(zapros)+1, 0);//Шлем данные
if(ret==SOCKET_ERROR) {
cout << "Socket error" << endl;
return 0;
}
int stat=1;
while(stat) {
char get[1024]="";
ret=recv(sClient, get, 1024, 0);//Получаем данные
cout << get;
if(ret==0) stat=0;
if(ret==SOCKET_ERROR) {
cout << "Socket error" << endl;
return 0;
}
}
WSACleanup();//Не забываем выгрузить библиотеку
}
Зайди lstyle.ucoz.ru вторая книга - я с ее примеров начал работать с винсок
Последний раз редактировалось agrofyl2; 31.07.2009 в 00:12..
|
|
|

31.07.2009, 18:40
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
У меня есть 2 класса: LIST и DATA. Я их включаю в отдельный хедер и подключаю в новый проэкт. Как можно сделать так, чтобы пользователь не мог создать объект класса DATA в своем проэкте?
|
|
|

31.07.2009, 18:50
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
У меня есть 2 класса: LIST и DATA. Я их включаю в отдельный хедер и подключаю в новый проэкт. Как можно сделать так, чтобы пользователь не мог создать объект класса DATA в своем проэкте?
что то я совсем не понял логики твоего вопроса.
|
|
|

31.07.2009, 18:58
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
Ну смотри, создал я свой хедер, в нем 2 класса. Далее создаю новый проект и подключаю в него свой хедер. Из хедера должен использоваться только 1 класс - LIST. Я в своем проекте не должен создавать объект класса DATA . То есть не допустить создание нового объекта этого класса пользователем вручную. Как это реализовать?
хедер:
Код:
class DATA
{
методы...
};
class LIST
{
методы...
};
В новом проекте файл срр:
Код:
LIST mylist;// так можно и нужно
DATA mydata;// а вот это я хочу запретить
Возможно ли такое сделать?
Последний раз редактировалось horlyk; 31.07.2009 в 19:04..
|
|
|

31.07.2009, 19:53
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Ну сделай конструктор класса DATA приватным.
И если надо будет создать экземпляр класса, делай его дружественным по отношению к другому классу.
Последний раз редактировалось razb; 31.07.2009 в 20:01..
|
|
|

31.07.2009, 20:11
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме: 233095
Репутация:
21
|
|
Код:
class DATA
{
public:
методы...
private:
DATA() { инициализация... }
};
class LIST
{
public:
LIST() { Head = new DATA(); }// как в такой ситуации быть?
методы...
private:
DATA* Head;
};
А если вот такая ситуация?
|
|
|

31.07.2009, 20:12
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
объяви класс внутри класса LIST с модификатором private. вроде должно помочь.
Код:
class LIST
{
private:
class DATA
{
public:
DATA() { }
};
public:
LIST() { Head = new DATA(); }// как в такой ситуации быть?
private:
DATA* Head;
};
Последний раз редактировалось Ra$cal; 31.07.2009 в 20:15..
|
|
|

31.07.2009, 20:14
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Я же написал постом выше.
Код:
class DATA
{
friend class LIST;
public:
методы...
private:
DATA() { инициализация... }
};
class LIST
{
public:
LIST() { Head = new DATA(); }// как в такой ситуации быть?
методы...
private:
DATA* Head;
};
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|