HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #3381  
Старый 30.07.2009, 21:27
agrofyl2
Познающий
Регистрация: 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");
       }
}
 
Ответить с цитированием

  #3382  
Старый 30.07.2009, 23:14
Gin
Участник форума
Регистрация: 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..
 
Ответить с цитированием

  #3383  
Старый 31.07.2009, 00:08
agrofyl2
Познающий
Регистрация: 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..
 
Ответить с цитированием

  #3384  
Старый 31.07.2009, 18:40
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

У меня есть 2 класса: LIST и DATA. Я их включаю в отдельный хедер и подключаю в новый проэкт. Как можно сделать так, чтобы пользователь не мог создать объект класса DATA в своем проэкте?
 
Ответить с цитированием

  #3385  
Старый 31.07.2009, 18:50
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
У меня есть 2 класса: LIST и DATA. Я их включаю в отдельный хедер и подключаю в новый проэкт. Как можно сделать так, чтобы пользователь не мог создать объект класса DATA в своем проэкте?
что то я совсем не понял логики твоего вопроса.
 
Ответить с цитированием

  #3386  
Старый 31.07.2009, 18:58
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Ну смотри, создал я свой хедер, в нем 2 класса. Далее создаю новый проект и подключаю в него свой хедер. Из хедера должен использоваться только 1 класс - LIST. Я в своем проекте не должен создавать объект класса DATA . То есть не допустить создание нового объекта этого класса пользователем вручную. Как это реализовать?

хедер:
Код:
class DATA
{
    методы...
};

class LIST
{
    методы...
};
В новом проекте файл срр:
Код:
LIST mylist;// так можно и нужно
DATA mydata;// а вот это я хочу запретить
Возможно ли такое сделать?

Последний раз редактировалось horlyk; 31.07.2009 в 19:04..
 
Ответить с цитированием

  #3387  
Старый 31.07.2009, 19:53
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Ну сделай конструктор класса DATA приватным.
И если надо будет создать экземпляр класса, делай его дружественным по отношению к другому классу.

Последний раз редактировалось razb; 31.07.2009 в 20:01..
 
Ответить с цитированием

  #3388  
Старый 31.07.2009, 20:11
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Код:
class DATA
{ 
     public:
     методы...
     private:
     DATA() { инициализация... } 
};
 class LIST
{ 
     public:
     LIST() { Head = new DATA(); }// как в такой ситуации быть?
     методы... 

     private:
     DATA* Head;
};
А если вот такая ситуация?
 
Ответить с цитированием

  #3389  
Старый 31.07.2009, 20:12
Ra$cal
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #3390  
Старый 31.07.2009, 20:14
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Я же написал постом выше.
Код:
class DATA
{ 
     friend class LIST;
     public:
     методы...
     private:
     DATA() { инициализация... } 
};
 class LIST
{ 
     public:
     LIST() { Head = new DATA(); }// как в такой ситуации быть?
     методы... 

     private:
     DATA* Head;
};
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 


Быстрый переход




ANTICHAT.XYZ