Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ping, Реализация Ping в ВСВ 
V
    Опции темы
Bima
Дата 9.10.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Привет всем.

Прошу откликнуться всех тех, кто писал пинг на ВСВ. Сторонние компоненты не предлагать, нужет чистый код на ВСВ.


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 9.10.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Bima @  9.10.2006,  11:18 Найти цитируемый пост)
нужет чистый код на ВСВ. 

что это обозначает?
VCL or WinAPI (Sockets)????


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 9.10.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



можно и WinAPI
я имел ввиду, что бы не предлагали код с использование сторонних компонентов.

Конечно придется использовать WinAPI, но с привязкой к VCL


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 9.10.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Bima @  9.10.2006,  11:42 Найти цитируемый пост)
с привязкой к VCL 

к каким VCL встроеным в билдер?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 9.10.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



ко всем в стандартной комлектации... 


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 9.10.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 9.10.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Вот что получилось:

на форму кинул label и Edit
код основной программы:
Код

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Kod.h"
#include "Cping.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
CPing ping;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner){}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BOOL bResult = ping.Ping(Edit1->Text.c_str());
if( bResult )
   {
   Application->MessageBox("Good","Information",MB_ICONINFORMATION+MB_SYSTEMMODAL);
   }
else
   {
   Application->MessageBox("Error","Error",MB_ICONWARNING);
   }
}
//---------------------------------------------------------------------------


код класса CPing
Код

#include "CPing.h"

CPing::CPing()
{
    bValid = FALSE;
    WSADATA wsaData;            // WSADATA
    int nRet;                    // General use return code

    // Dynamically load the ICMP.DLL
    hndlIcmp = LoadLibrary("ICMP.DLL");
    if (hndlIcmp == NULL)
    {
        ::MessageBox(NULL, "Could not load ICMP.DLL", "Error:", MB_OK);
        return;
    }
    // Retrieve ICMP function pointers
    pIcmpCreateFile  = (HANDLE (WINAPI *)(void))
        GetProcAddress((HMODULE)hndlIcmp,"IcmpCreateFile");
    pIcmpCloseHandle = (BOOL (WINAPI *)(HANDLE))
        GetProcAddress((HMODULE)hndlIcmp,"IcmpCloseHandle");
    pIcmpSendEcho = (DWORD (WINAPI *)
        (HANDLE,DWORD,LPVOID,WORD,PIPINFO,LPVOID,DWORD,DWORD))
        GetProcAddress((HMODULE)hndlIcmp,"IcmpSendEcho");
    // Check all the function pointers
    if (pIcmpCreateFile == NULL        || 
        pIcmpCloseHandle == NULL    ||
        pIcmpSendEcho == NULL)
    {
        ::MessageBox(NULL, "Error loading ICMP.DLL", "Error:", MB_OK);
        FreeLibrary((HMODULE)hndlIcmp);
        return;
    }

    // Init WinSock
    nRet = WSAStartup(0x0101, &wsaData );
    if (nRet)
    {
        ::MessageBox(NULL, "WSAStartup() error:", "Error:", MB_OK);
        WSACleanup();
        FreeLibrary((HMODULE)hndlIcmp);
        return;
    }
    // Check WinSock version
    if (0x0101 != wsaData.wVersion)
    {
        ::MessageBox(NULL, "No WinSock version 1.1 support found", "Error:", MB_OK);
        WSACleanup();
        FreeLibrary((HMODULE)hndlIcmp);
        return;
    }
    bValid = TRUE;
}

CPing::~CPing()
{
    WSACleanup();
    FreeLibrary((HMODULE)hndlIcmp);
}

int CPing::Ping(char* strHost)
{
    struct in_addr iaDest;        // Internet address structure
    LPHOSTENT pHost;            // Pointer to host entry structure
    DWORD *dwAddress;            // IP Address
    IPINFO ipInfo;                // IP Options structure
    ICMPECHO icmpEcho;            // ICMP Echo reply buffer
    HANDLE hndlFile;            // Handle for IcmpCreateFile()

    if(!bValid)
    {
        return FALSE;
    }

    // Lookup destination
    // Use inet_addr() to determine if we're dealing with a name
    // or an address
    iaDest.s_addr = inet_addr(strHost);
    if (iaDest.s_addr == INADDR_NONE)
        pHost = gethostbyname(strHost);
    else
        pHost = gethostbyaddr((const char *)&iaDest, 
                        sizeof(struct in_addr), AF_INET);
    if (pHost == NULL)
    {
        return FALSE;
    }

    // Copy the IP address
    dwAddress = (DWORD *)(*pHost->h_addr_list);

    // Get an ICMP echo request handle        
    hndlFile = pIcmpCreateFile();

    // Set some reasonable default values
    ipInfo.Ttl = 255;
    ipInfo.Tos = 0;
    ipInfo.IPFlags = 0;
    ipInfo.OptSize = 0;
    ipInfo.Options = NULL;
    icmpEcho.Status = 0;
    // Reqest an ICMP echo
    pIcmpSendEcho(
        hndlFile,        // Handle from IcmpCreateFile()
        *dwAddress,        // Destination IP address
        NULL,            // Pointer to buffer to send
        0,                // Size of buffer in bytes
        &ipInfo,        // Request options
        &icmpEcho,        // Reply buffer
        sizeof(struct tagICMPECHO),
        1000);            // Time to wait in milliseconds
    // Print the results
    iaDest.s_addr = icmpEcho.Source;
    if (icmpEcho.Status)
    {
        return FALSE;
    }

    // Close the echo request file handle
    pIcmpCloseHandle(hndlFile);
    return TRUE;
}


код заголовочного файла для класса CPing:
Код

#ifndef CPING_H
#define CPING_H

//#include "StdAfx.h" заремировал, так как здесь используется класс MFC
#include <windows.h> //Вставил, что бы заработала программа
#include <winsock.h>  //Вставил, что бы заработала программа

typedef struct tagIPINFO
{
    u_char Ttl;                // Time To Live
    u_char Tos;                // Type Of Service
    u_char IPFlags;            // IP flags
    u_char OptSize;            // Size of options data
    u_char FAR *Options;    // Options data buffer
}IPINFO;

typedef IPINFO* PIPINFO;

typedef struct tagICMPECHO
{
    u_long Source;            // Source address
    u_long Status;            // IP status
    u_long RTTime;            // Round trip time in milliseconds
    u_short DataSize;        // Reply data size
    u_short Reserved;        // Unknown
    void FAR *pData;        // Reply data buffer
    IPINFO    ipInfo;            // Reply options
}ICMPECHO;

typedef ICMPECHO* PICMPECHO;

class CPing
{
public:
    CPing();
    ~CPing();
    BOOL Ping(char* strHost);
private:
    // ICMP.DLL Export Function Pointers
    HANDLE (WINAPI *pIcmpCreateFile)(VOID);
    BOOL (WINAPI *pIcmpCloseHandle)(HANDLE);
    DWORD (WINAPI *pIcmpSendEcho)
        (HANDLE,DWORD,LPVOID,WORD,PIPINFO,LPVOID,DWORD,DWORD);
    HANDLE hndlIcmp;            // LoadLibrary() handle to ICMP.DLL
    BOOL bValid; // if it doesn't construct properly, it won't be valid
};
#endif


Теперь сам вопрос: Каким образом вызывать функцию в своей программе, что бы можно было передавать колличество передаваемых байт и время на таймут? Еще бы хотелось, что бы функция в качестве параметра возвращала сколько мс она тратит на пинг


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 9.10.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



добавь в класс еще один метод
Код

int CPing::Pingms(char* strHost)
{
    struct in_addr iaDest;        // Internet address structure
    LPHOSTENT pHost;            // Pointer to host entry structure
    DWORD *dwAddress;            // IP Address
    IPINFO ipInfo;                // IP Options structure
    ICMPECHO icmpEcho;            // ICMP Echo reply buffer
    HANDLE hndlFile;            // Handle for IcmpCreateFile()
    if(!bValid)
    {
        return -1;
    }
    // Lookup destination
    // Use inet_addr() to determine if we're dealing with a name
    // or an address
    iaDest.s_addr = inet_addr(strHost);
    if (iaDest.s_addr == INADDR_NONE)
        pHost = gethostbyname(strHost);
    else
        pHost = gethostbyaddr((const char *)&iaDest, 
                        sizeof(struct in_addr), AF_INET);
    if (pHost == NULL)
    {
        return -1;
    }
    // Copy the IP address
    dwAddress = (DWORD *)(*pHost->h_addr_list);
    // Get an ICMP echo request handle        
    hndlFile = pIcmpCreateFile();
    // Set some reasonable default values
    ipInfo.Ttl = 255;
    ipInfo.Tos = 0;
    ipInfo.IPFlags = 0;
    ipInfo.OptSize = 0;
    ipInfo.Options = NULL;
    icmpEcho.Status = 0;
    // Reqest an ICMP echo
    pIcmpSendEcho(
        hndlFile,        // Handle from IcmpCreateFile()
        *dwAddress,        // Destination IP address
        NULL,            // Pointer to buffer to send
        0,                // Size of buffer in bytes
        &ipInfo,        // Request options
        &icmpEcho,        // Reply buffer
        sizeof(struct tagICMPECHO),
        1000);            // Time to wait in milliseconds
    // Print the results
    iaDest.s_addr = icmpEcho.Source;
    if (icmpEcho.Status)
    {
        return -1;
    }
    // Close the echo request file handle
    pIcmpCloseHandle(hndlFile);
    return icmpEcho.RTTime;
}



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 9.10.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



я понял, что нужно добавлять метод в класс.
Но я бы хотел просто изменить заголовочную функцию int CPing::Ping(char* strHost)
на конструкцию типа вот этой: int CPing::Ping(char* strHost, DWORD mByte, DWORD TimeOut, DWORD *mSek)
где mByte колличество передаваемых и получаемых байт,
TimeOut - время таймаута,
mSek - время затраченное на пинг
все бы ничего, но я не знаю, куда вставлять TimeOut, mSek и mByte smile




--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 9.10.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Код

int CPing::Ping(char* strHost, DWORD mByte, DWORD TimeOut, DWORD *mSek)
{
    struct in_addr iaDest;        // Internet address structure
    LPHOSTENT pHost;            // Pointer to host entry structure
    DWORD *dwAddress;            // IP Address
    IPINFO ipInfo;                // IP Options structure
    ICMPECHO icmpEcho;            // ICMP Echo reply buffer
    HANDLE hndlFile;            // Handle for IcmpCreateFile()
    if(!bValid)
    {
        return FALSE;
    }
    // Lookup destination
    // Use inet_addr() to determine if we're dealing with a name
    // or an address
    iaDest.s_addr = inet_addr(strHost);
    if (iaDest.s_addr == INADDR_NONE)
        pHost = gethostbyname(strHost);
    else
        pHost = gethostbyaddr((const char *)&iaDest, 
                        sizeof(struct in_addr), AF_INET);
    if (pHost == NULL)
    {
        return FALSE;
    }
    // Copy the IP address
    dwAddress = (DWORD *)(*pHost->h_addr_list);
    // Get an ICMP echo request handle        
    hndlFile = pIcmpCreateFile();
    // Set some reasonable default values
    ipInfo.Ttl = 255;
    ipInfo.Tos = 0;
    ipInfo.IPFlags = 0;
    ipInfo.OptSize = mByte;
    ipInfo.Options = NULL;// здесь надо имхо выделить сколько байт шлешь
    icmpEcho.Status = 0;
    // Reqest an ICMP echo
    pIcmpSendEcho(
        hndlFile,        // Handle from IcmpCreateFile()
        *dwAddress,        // Destination IP address
        NULL,            // Pointer to buffer to send
        0,                // Size of buffer in bytes
        &ipInfo,        // Request options
        &icmpEcho,        // Reply buffer
        sizeof(struct tagICMPECHO),
        TimeOut);            // Time to wait in milliseconds
    // Print the results
    iaDest.s_addr = icmpEcho.Source;
    *mSek=RTTime;
    if (icmpEcho.Status)
    {
        return FALSE;
    }
    // Close the echo request file handle
    pIcmpCloseHandle(hndlFile);
    return TRUE;
}


Добавлено @ 14:38 
http://www.citforum.ru/nets/articles/ping/
http://msdn.microsoft.com/library/default....cmpsendecho.asp


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 10.10.2006, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



ничего не выходит.

сначала ничего скомпилировать не мог.
Потом заменил строку *mSek=RTTime;
на *mSek=icmpEcho.RTTime;
скомпилировалось хорошо.

Вызываю вот так
Код

DWORD *p;
BOOL bResult = ping.Ping(Edit1->Text.c_str(), 5, 1000, p );
if( bResult )
   {
   Application->MessageBox("Good","Information",MB_ICONINFORMATION+MB_SYSTEMMODAL);
   Label2->Caption=IntToStr(p);//здесь пытаюсь получить время ответа
   }
else
   {
   Application->MessageBox("Error","Error",MB_ICONWARNING);
   }


но при вызове этой функции происходит исключение в моей программе и тормозится smile

Это сообщение отредактировал(а) Bima - 10.10.2006, 06:19


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 10.10.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Bima @  10.10.2006,  05:17 Найти цитируемый пост)
 Label2->Caption=IntToStr(p);//здесь пытаюсь получить время ответа
   }

здесь надо Label2->Caption=IntToStr(*p);  smile  smile  smile 
и 
Цитата(Bima @  10.10.2006,  05:17 Найти цитируемый пост)
этой функции происходит исключение

потому 
Цитата(Romikgy @  9.10.2006,  13:36 Найти цитируемый пост)
 ipInfo.Options = NULL;// здесь надо имхо выделить сколько байт шлешь

 smile  smile  smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 10.10.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Код

int CPing::Ping(char* strHost, DWORD mByte, DWORD TimeOut, DWORD *mSek)
{
    struct in_addr iaDest;        // Internet address structure
    LPHOSTENT pHost;            // Pointer to host entry structure
    DWORD *dwAddress;            // IP Address
    IPINFO ipInfo;                // IP Options structure
    ICMPECHO icmpEcho;            // ICMP Echo reply buffer
    HANDLE hndlFile;            // Handle for IcmpCreateFile()
    if(!bValid)
    {
        return FALSE;
    }
    // Lookup destination
    // Use inet_addr() to determine if we're dealing with a name
    // or an address
    iaDest.s_addr = inet_addr(strHost);
    if (iaDest.s_addr == INADDR_NONE)
        pHost = gethostbyname(strHost);
    else
        pHost = gethostbyaddr((const char *)&iaDest, 
                        sizeof(struct in_addr), AF_INET);
    if (pHost == NULL)
    {
        return FALSE;
    }
    // Copy the IP address
    dwAddress = (DWORD *)(*pHost->h_addr_list);
    // Get an ICMP echo request handle        
    hndlFile = pIcmpCreateFile();
    // Set some reasonable default values
    ipInfo.Ttl = 255;
    ipInfo.Tos = 0;
    ipInfo.IPFlags = 0;
    ipInfo.OptSize = mByte;
    if (mByte)
    ipInfo.Options = new unsigned char[mByte];// çäåñü íàäî èìõî âûäåëèòü ñêîëüêî áàéò øëåøü
    else
    ipInfo.Options = NULL;
    icmpEcho.Status = 0;
    // Reqest an ICMP echo
    pIcmpSendEcho(
        hndlFile,        // Handle from IcmpCreateFile()
        *dwAddress,        // Destination IP address
        NULL,            // Pointer to buffer to send
        0,                // Size of buffer in bytes
        &ipInfo,        // Request options
        &icmpEcho,        // Reply buffer
        sizeof(struct tagICMPECHO),
        TimeOut);            // Time to wait in milliseconds
    // Print the results
    iaDest.s_addr = icmpEcho.Source;
    *mSek=icmpEcho.RTTime;
    if (icmpEcho.Status)
    {
        return FALSE;
    }
    // Close the echo request file handle
    if (mByte)
    delete [] ipInfo.Options;
    pIcmpCloseHandle(hndlFile);
    return TRUE;
}

использование
Код

DWORD lll;
 ping.Ping("192.168.12.1",100,1000,&lll);
 Edit1->Text=IntToStr(lll);


Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  newping.zip 2,39 Kb


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 10.10.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



все отлично, код заработал, но практически всегда выдает, что функция закончилась неудачно (False)
Хотя время таймаута до 10 секунд ставлю, а возвращается от 20 до 70 мс
Код

DWORD p;
BOOL bResult = ping.Ping(Edit1->Text.c_str(), 1, 10000, &p );
Label4->Caption=IntToStr(p); // время затраченое на пинг в любом случае
if( bResult )
   {
   Application->MessageBox("Good","Information",MB_ICONINFORMATION+MB_SYSTEMMODAL);
   Label2->Caption=IntToStr(p); // время затраченое на пинг в случае удачной передачи
   }
else
   {
   Application->MessageBox("Error","Error",MB_ICONWARNING);
   }


Почему функция возвращает False???

Это сообщение отредактировал(а) Bima - 10.10.2006, 09:53


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 10.10.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(Romikgy @  10.10.2006,  08:19 Найти цитируемый пост)
pIcmpSendEcho(

возвращает ответ где статус ответа
Код

//
// IP_STATUS codes returned from IP APIs
//

#define IP_STATUS_BASE              11000

#define IP_SUCCESS                  0
#define IP_BUF_TOO_SMALL            (IP_STATUS_BASE + 1)
#define IP_DEST_NET_UNREACHABLE     (IP_STATUS_BASE + 2)
#define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3)
#define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4)
#define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5)
#define IP_NO_RESOURCES             (IP_STATUS_BASE + 6)
#define IP_BAD_OPTION               (IP_STATUS_BASE + 7)
#define IP_HW_ERROR                 (IP_STATUS_BASE + 8)
#define IP_PACKET_TOO_BIG           (IP_STATUS_BASE + 9)
#define IP_REQ_TIMED_OUT            (IP_STATUS_BASE + 10)
#define IP_BAD_REQ                  (IP_STATUS_BASE + 11)
#define IP_BAD_ROUTE                (IP_STATUS_BASE + 12)
#define IP_TTL_EXPIRED_TRANSIT      (IP_STATUS_BASE + 13)
#define IP_TTL_EXPIRED_REASSEM      (IP_STATUS_BASE + 14)
#define IP_PARAM_PROBLEM            (IP_STATUS_BASE + 15)
#define IP_SOURCE_QUENCH            (IP_STATUS_BASE + 16)
#define IP_OPTION_TOO_BIG           (IP_STATUS_BASE + 17)
#define IP_BAD_DESTINATION          (IP_STATUS_BASE + 18)

 IP_SUCCESS                  0 это при успешном завершении ф_ции, если верить мсдн smile
это из файла ipexport.h

Это сообщение отредактировал(а) Romikgy - 10.10.2006, 10:15


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1454 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.