Borland C++ FAQ Страница 10. Сети и Интернет
|
Страница 10 из 17
Сети и Интернет - Как послать сообщение компьютеру в локальной сети
// Для того чтобы послать сообщение компьютеру в локальной сети // напишите следующие функции: 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<=Kol;i++) { ret=SendNetMessage(Komp,Mes); } } - Как скачать файл из Интернета с конкретного сайта
// напишите следующуй код: NMHTTP1->InputFileMode=true; NMHTTP1->Get(" https://www.xxx.ru/pic.gif"); NMHTTP1->Body="pic.gif"; //на винт скинуть - Получение IP-адреса локальной машины
// напишите следующуй код: #include <winsock.h> #include <stdio.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 <winsock.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; //выводим имя }
|