|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » нужен с++ код для посылки пакета данных в инет |
|
нужен с++ код для посылки пакета данных в инет
|
![]() Ветеран Сообщения: 1864 |
У меня такая проблема - два компа подсоединены к инету через один роутер, он сам автоматически подсоединяется в инет. Но если инет не был в течении нескольких минут нужен (то есть не было ни одного пакета данных отправлено), то роутера отсоединяется от инета и подсоединяется снова только в случае, если ктото например открыл браузер. Это всё не беда, но это подсоединение длиться где то секунд двадцать, вроде недолго, но ждать всё время надоедает, и ктому же отключается аська, если я давно ничегов инете не делал. В настройках роутера постоянную связь сделать нельзя, значит надо обходными путями идти, отсюда возникла мысль:
Нужна маленькая программка, которая бы например каждую минуту отсылала бы какое то определённое количество пакетов (хотя бы общим размером 1 кб) куда нибудь в инет (или что нибудь проверяла, например есть такой то файл на таком то сайте (хостинг у меня в инете есть)) для эмуляции постоянного соединение к инету (то есть роутер будет регистрировать какие то телодвижения и не будет отключаться от инета). Мне не нужна готовая программка, нужен код, дальше я всё сам скомпилирую, или намекните какие функции и/или библиотеки мне могут понадобиться для такой простой программки |
|
Отправлено: 20:41, 07-03-2005 |
![]() Старожил Сообщения: 300
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
![]() InternetOpen, InternetOpenURL, InternetCloseHandle, GetTickCount, возможно еще HTTPQueryInfo и InternetReadFile. |
|
Отправлено: 21:16, 07-03-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать вот очень сырой код с использованием сокетов для работы по протоколу tcp.
#include <windows.h> #include <stdio.h> SOCKET sClient; WSADATA lpWSAData; char *http_user_agent="Mozilla/4.0 (compatible; MSIE 5.0; Win32)"; static char Rec[2048000]; char szFile[MAX_PATH]="test"; HANDLE hFile; bool SendString(SOCKET sClient,char* str); char* GetString(SOCKET sClient); int OpenURL(char *url); void CloseURL(void); void main(void) { hFile=CreateFile(szFile,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); int err=OpenURL("mail.ru"); if (err != 0) printf("Error #%d: %d\n",err, WSAGetLastError()); CloseURL(); CloseHandle(hFile); } int OpenURL(char *url) { char szQuery[2048]; // string for send request to server char szHlp[2048]; //helper string that contains server name and path on the server char *pch; char *http_host; char *http_path; //path on server char *none=""; // empty string int iPort; struct sockaddr_in server; struct hostent *host; if (WSAStartup(MAKEWORD(1,1),&lpWSAData)!=0) return(1); // use default port number - 80 if not specified other strcpy(szHlp,url); pch = strchr((char*)szHlp,':'); // port not defined in passed URL if (pch==NULL) { iPort = 80; } // port defined in passed URL else { pch[0] = '\0'; // truncate port from URL iPort = atoi(++pch); if(iPort == 0) iPort = 80; } // separate server name from path on server pch = strchr((char*)szHlp,'/'); if (pch!=NULL) { pch[0] = '\0'; http_path=pch+1; } else { http_path=none; } http_host=szHlp; sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sClient==INVALID_SOCKET) return(2); host = gethostbyname(szHlp); CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length); server.sin_family = AF_INET; server.sin_port = htons(iPort); // establish a connection with socket 's' if (connect(sClient, (struct sockaddr *)&server,sizeof(server)) == SOCKET_ERROR) return(4); strcpy(szQuery,"GET /"); strcat(szQuery,http_path); strcat(szQuery," HTTP/1.1\nHost: "); strcat(szQuery,http_host); strcat(szQuery,"\nUser-agent: "); strcat(szQuery,http_user_agent); strcat(szQuery,"\nAccept: */*\n\n"); printf("%s",szQuery); // send request if (!SendString(sClient,szQuery)) return(5); // receive response char *str=GetString(sClient); return(0); } // // routine for send request in 'str' to socket in 's' // bool SendString(SOCKET sClient,char* str) { int cnt = send(sClient,str,strlen(str),0); if (cnt == SOCKET_ERROR) return(false); else return(true); } // // routine for receive entire information from 's' // socket and store it in 'Rec' buffer // char* GetString(SOCKET sClient) { char *str; char InBuff[2048]; int cnt; DWORD dwpoint; strcpy("",Rec); while (cnt!=0) { // clear InBuff - fill 2048 bytes to NULL memset(&InBuff,0,2048); // receive a 2048 bytes from 's' sock cnt = recv (sClient, (char*)&InBuff, sizeof(InBuff),0); WriteFile(hFile,InBuff, sizeof(InBuff)-1, &dwpoint, NULL); // append it to main buffer 'Rec' strcat(Rec,InBuff); } return((char*)&Rec); } void CloseURL(void) { WSACleanup(); } |
------- Отправлено: 21:20, 07-03-2005 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
EventID - Код: 6006 , код: 6009, код: 6005. Источник - Eventlog. | Panathinaikos | Устранение критических ошибок Windows | 6 | 15-04-2010 16:22 | |
[решено] Нужен код ссылки чтобы открывалось два окна при нажатии на нее | QUMATOZ | Вебмастеру | 2 | 27-04-2009 13:31 | |
Программы для посылки сообщений | musician | Программное обеспечение Windows | 3 | 25-05-2008 19:46 | |
LPT-LPT+кабельный модем нужен инет W98 | ZXFlanker | Сетевые технологии | 2 | 03-08-2005 09:32 | |
нужен код | Trojn | Вебмастеру | 3 | 01-10-2004 18:52 |
|