Форум   Статьи   Новости   Файлы   Bugtraq   Сниффер   Друзья   О Клубе
Вернуться   HPC / Кодинг / Низкоуровневое программирование / Win API
 
  Страница 1
  , 16:40   #1
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию winsock dev c++

подскажите плз почему не идет соединение. код на dev c++:

source:
SOCKET my_sock;
                    my_sock=socket(AF_INET,SOCK_STREAM,0);
                    sockaddr_in dest_addr;
                    dest_addr.sin_family=AF_INET;
                    dest_addr.sin_port=htons(PORT);
                    HOSTENT *hst;
                    if (inet_addr(SERVERADDR)!=INADDR_NONE)
                    {
                    } else {
                         hst=gethostbyname(SERVERADDR);
                         ((unsigned long *)&dest_addr.sin_addr)[0]=((unsigned long **)hst->h_addr_list)[0][0];                               
                    }
                    connect(my_sock,(sockaddr *)&dest_addr,sizeof(dest_addr));
                    closesocket(my_sock);
прога должна просто соединиться и отключиться чтоб засветить свой ip.
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
Наши Спонсоры
  , 17:30   #2
Продвинутый
 
Аватар для BlackH
 
Локация: underworld
Регистрация: 05.12.2011
Сообщений: 1,608

Репутация: 167 / 3
По умолчанию

Можно в отладчик загнать и посмотреть где ошибка.Даи весь код я гляну.
__________________
Вангую..
Пользователь вне форума    
  , 17:49   #3
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

это служба windows. код:

source:
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>

#define SLEEP_TIME 500
#define PORT 666
#define SERVERADDR "127.0.0.1"

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")

SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

void ControlHandler(DWORD request)
{
     switch(request)
     {
          case SERVICE_CONTROL_STOP:                                            //OnStop
               ServiceStatus.dwWin32ExitCode = 0;
               ServiceStatus.dwCurrentState = SERVICE_STOPPED;
               SetServiceStatus (hStatus, &ServiceStatus);
               return;
          case SERVICE_CONTROL_SHUTDOWN:                                        //OnShutdown
               ServiceStatus.dwWin32ExitCode = 0;
               ServiceStatus.dwCurrentState = SERVICE_STOPPED;
               SetServiceStatus (hStatus, &ServiceStatus);
               return;
          default:
               break;
     }
     // Report current status
     SetServiceStatus (hStatus, &ServiceStatus);
     return;
}


int InitService()                                                              //OnInit
{
    //init
    return(0);
}

void ServiceMain(int argc, char** argv)
{
     int error;
     ServiceStatus.dwServiceType = SERVICE_WIN32;
     ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
     ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
     ServiceStatus.dwWin32ExitCode = 0;
     ServiceStatus.dwServiceSpecificExitCode = 0;
     ServiceStatus.dwCheckPoint = 0;
     ServiceStatus.dwWaitHint = 0;
     hStatus = RegisterServiceCtrlHandler("MemoryStatus",(LPHANDLER_FUNCTION)ControlHandler);
     
     if (hStatus == (SERVICE_STATUS_HANDLE)0)
     {
            // Registering Control Handler failed
            return;
     }
     // Initialize Service
     error = InitService();
     
     if (error != 0)
     {
            // Initialization failed
            ServiceStatus.dwCurrentState =
            SERVICE_STOPPED;
            ServiceStatus.dwWin32ExitCode = 1;
            SetServiceStatus(hStatus, &ServiceStatus);
            return;
     }
     
     // We report the running status to SCM.
     ServiceStatus.dwCurrentState =
     SERVICE_RUNNING;
     SetServiceStatus (hStatus, &ServiceStatus);
     MEMORYSTATUS memory;
     
     // The worker loop of a service
     
     while (ServiceStatus.dwCurrentState ==SERVICE_RUNNING)                                     //MainLoop
     {
           //work
           try {
                    SOCKET my_sock;
                    my_sock=socket(AF_INET,SOCK_STREAM,0);
                    sockaddr_in dest_addr;
                    dest_addr.sin_family=AF_INET;
                    dest_addr.sin_port=htons(PORT);
                    HOSTENT *hst;
                    if (inet_addr(SERVERADDR)!=INADDR_NONE)
                    {
                    } else {
                         hst=gethostbyname(SERVERADDR);
                         ((unsigned long *)&dest_addr.sin_addr)[0]=((unsigned long **)hst->h_addr_list)[0][0];                               
                    }
                    connect(my_sock,(sockaddr *)&dest_addr,sizeof(dest_addr));
                    closesocket(my_sock);
               }
           catch(int i) {}
           Sleep(SLEEP_TIME);
     }
     return;
}

int main()
{
    SERVICE_TABLE_ENTRY ServiceTable[2];
    ServiceTable[0].lpServiceName = "MemoryStatus";
    ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
    ServiceTable[1].lpServiceName = NULL;
    ServiceTable[1].lpServiceProc = NULL;
    // Start the control dispatcher thread for our service
    StartServiceCtrlDispatcher(ServiceTable);
}
все работает, цикл запускается, но конект не идет
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 18:15   #4
Banned
 
Регистрация: 04.09.2011
Сообщений: 392

Репутация: 3 / 0
По умолчанию

Спойлер

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <winsock2.h>
using namespace std;

int main(int argc, char *argv[])
{

WSADATA WSAData;
int cercont,sockID,Bnd;
sockaddr_in to;

if(cercont=(WSAStartup(0x0202,&WSAData))<0) { cout <<"err" <<endl;}

to.sin_family= AF_INET;
to.sin_port= htons(8080);
to.sin_addr.s_addr= inet_addr("127.0.0.1");

sockID=socket(AF_INET,SOCK_STREAM,0);
Bnd=connect(sockID,(struct sockaddr*)&to,sizeof(to));


char buf[]="hello server!";
send(sockID,buf,sizeof(buf),0);


system("PAUSE");
return EXIT_SUCCESS;
}

Не стал прогонять твой код- времени пока нет. Выше рабочий примитив. Да, к стати, в DEV либы можно подключить в настройках проекта. Так что необязательно прагму прописывать =) Достаточно в опциях проекта выбрать из списка нужные либы. Надеюсь я тебя правильно понял.
 

Последний раз редактировалось SSBug; 13.03.2012 в 18:21.
Пользователь вне форума    
  , 18:19   #5
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

спасибо, гляну. а парагму не так то и проблемно прописать зато сразу видно
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 18:28   #6
Продвинутый
 
Аватар для BlackH
 
Локация: underworld
Регистрация: 05.12.2011
Сообщений: 1,608

Репутация: 167 / 3
По умолчанию

del
__________________
Вангую..
Пользователь вне форума    
  , 19:38   #7
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

Цитата:
Сообщение от BlackH Посмотреть сообщение
del
wtf?
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 19:54   #8
Постоянный
 
Аватар для PsiBoX
 
Регистрация: 19.07.2010
Сообщений: 617

Репутация: 102 / 2
По умолчанию

Он просто удалил свой пост.
Передумал отвечать.
__________________
[SIGPIC][/SIGPIC]
__________________________________________________
[FONT="Comic Sans MS"][COLOR="DarkRed"][B]~icq: [B]5[/B][B]9[/B][B]7[/B][B]4[/B][B]5[/B][B]0[/B][B]1[/B][B]9[/B][B]7[/B] skype: psibooox (проверяется редко)~[/B][/COLOR]
[B]Sanguine, My Brother![/B]
Уехал. В сети редко.[/FONT]
Пользователь вне форума    
  , 20:40   #9
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

подскажите плз как из адреса типо google.com ip получить
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 21:16   #10
Banned
 
Регистрация: 04.09.2011
Сообщений: 392

Репутация: 3 / 0
По умолчанию

Командная строка ->ping google.com в ответе увидишь адрес
 
Пользователь вне форума    
  , 21:37   #11
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

а чтоб прога ето делала?
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 22:06   #12
Banned
 
Регистрация: 04.09.2011
Сообщений: 392

Репутация: 3 / 0
По умолчанию

adns линк 1
линк 2

Позволю себе полюбопытствовать, для чего тебе нужна эта тема? Тянешься к сетевым истинам ? =D Если решишь ручками сформировать запрос к dns- скинь свои труды мне в личку по братски. Интересно будет посмотреть для общего развития)
 
Пользователь вне форума    
  , 10:00   #13
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

1)это будет супер-мего-страшный вирус
2)линки гляну, спасибо. а gethostbyname тут не прокатит?
3)ок, скину
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    
  , 11:42   #14
Banned
 
Регистрация: 04.09.2011
Сообщений: 392

Репутация: 3 / 0
По умолчанию

559

Спасибо за сорс, довольно таки интересно было глянуть. На счет gethost не знаю- конкретно этим вопросом не задавался. Но судя по статье это самое то. Если конечно ты не решил совсем уж вдаваться в подробности и писать сырой сок.
 
Пользователь вне форума    
  , 12:10   #15
559
Форумчанин
 
Аватар для 559
 
Регистрация: 27.05.2010
Сообщений: 83

Репутация: 2 / 0
По умолчанию

на msdn сказано что gethost устарел, лучше getaddrinfo использовать. но гемора с ним в 10 раз больше
__________________
хакер - не преступник
взлом - ради искуcства
смысл - в свободе
Пользователь вне форума    

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой пример winsock xaknik C/C++ 6 17.05.2012 15:15
Скачивание файла через winsock по HTTP 1nt C/C++ 4 20.12.2011 21:00
[Вопрос] Dev C++ ChernoHod C/C++ 2 05.09.2011 00:11
[Вопрос] Winsock qazwsx234 Basic 0 18.04.2011 08:24
[Статья] WinSock TCP IpSpyBot WestSide07 Delphi 4 23.02.2011 15:32



Часовой пояс GMT +2
Powered by vBulletin® 3.x.x Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

Copyright © 2008 - 2013 «HPC» Реклама на сайте Правила Форума Пользовательское соглашение Работа на сайте
При копировании материалов ставьте ссылку на источник
Все материалы представлены только в ознакомительных целях, администрация за их использование ответственности не несет.