Справочник советов и примеров по C++Builder

Сети и Интернет


  • Как послать сообщение компьютеру в локальной сети

    // Для того чтобы послать сообщение компьютеру в локальной сети

    // напишите следующие функции:

    bool SendNetMessage(AnsiString Komp, AnsiString Mes)

    {

    AnsiString From;

    char CompName[10];

    DWORD size=10;

    //Откуда



    if(!GetComputerName(CompName,&size)) return false;

    From=CompName;

    if(Mes.Length()==0) return false;

    HANDLE hSlot = CreateFile(("\\\\"+Komp+"\\mailslot\\messngr").c_str(),

    GENERIC_WRITE, FILE_SHARE_READ, NULL,

    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    if (hSlot == INVALID_HANDLE_VALUE) return false;

    DWORD cb=0;

    BOOL ret;

    char *buf=new char[From.Length()+1+Komp.Length()+1+Mes.Length()+1];

    //1. From

    memcpy(&buf[cb],From.c_str(),From.Length()+1);

    cb +=From.Length()+1; //+1 на конце должен быть 0

    //2. To

    memcpy(&buf[cb],Komp.c_str(),Komp.Length()+1);

    cb +=Komp.Length()+1;

    //3. Само сообщение

    memcpy(&buf[cb],Mes.c_str(),Mes.Length()+1);

    cb +=Mes.Length()+1;

    //ConvertToDos

    CharToOemBuff(buf,buf,cb);

    ret=WriteFile(hSlot, buf,cb, &cb, NULL);

    CloseHandle(hSlot);

    delete[] buf;

    if(!ret) return false;

    return true;

    }

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    AnsiString Komp,Mes;

    //Кому

    Komp=Edit1->Text; //Имя компьютера

    //Сообщение

    Mes=Edit2->Text; //Message

    bool ret;

    int Kol=UpDown1->Position;

    for(int i=1;i

    {

    ret=SendNetMessage(Komp,Mes);

    }

    }

  • Как скачать файл из Интернета с конкретного сайта

    // напишите следующуй код:

    NMHTTP1->InputFileMode=true;

    NMHTTP1->Get(" http://www.xxx.ru/pic.gif");

    NMHTTP1->Body="pic.gif"; //на винт скинуть

  • Получение IP-адреса локальной машины

    // напишите следующуй код:

    #include &ltwinsock.h>

    #include &ltstdio.h>

    void __fastcall TForm1::Button1Click(TObject *Sender)

    {

    WORD wVersionRequested;

    WSADATA wsaData;

    wVersionRequested = MAKEWORD(1, 0);

    int err = WSAStartup(wVersionRequested, &wsaData);

    if(err == 0)


    {

    char hn[1024];

    struct hostent *adr;

    if(gethostname((char *)&hn, 1024))

    {

    int err = WSAGetLastError();

    Beep();

    };

    adr = gethostbyname(hn);

    if(adr)

    {

      char *LocalIp = new char[15];

      sprintf(LocalIp,"%d.%d.%d.%d",

      (unsigned char)adr->h_addr_list[0][0],

      (unsigned char)adr->h_addr_list[0][1],

      (unsigned char)adr->h_addr_list[0][2],

      (unsigned char)adr->h_addr_list[0][3]);

      Label1->Caption=LocalIp; //Выводим IP адрес

    }

    }

    }

  • Получение имени локального компьютера

    // напишите следующуй код:

    #include &ltwinsock.h>

    WORD wVersionRequested;

    WSADATA wsaData;

    wVersionRequested = MAKEWORD(1, 0);

    int err = WSAStartup(wVersionRequested, &wsaData);

    if(err == 0)

    {

    char name[1024];

    if(gethostname((char *)&name, 1024))

    {

    int err = WSAGetLastError();

    Beep();

    };

    Label1->Caption=name; //выводим имя

    }


    Содержание раздела