Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.01.2016, 15:26   #1
Drago56
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 91
Репутация: 8
По умолчанию arp таблица

Подключены устройства дома к wi-fi,там телефон ,планшет и т д. сканирую подсеть, в арп таблице тока ноутбук, стационарный компьютер, а телефон и планшет не видит.В чем причина? почему эти устройства не заносятся в арп таблицу?
Код:

#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif

#include <stdio.h>
#include <iostream.h>
#include <windows.h>
#include <Winsock2.h>
#include <cstdio>
#include <sys/types.h>

//Use Ws2_32.lib
#include <Iphlpapi.h>
#pragma comment(lib,"IPHlpApi.Lib")

int main(int argc, char* argv[])
{
	WSADATA WsaData;
	DWORD _mac=inet_addr(mac);
	if (WSAStartup(0x0202, &WsaData)==NULL)
		printf("WSA Starup OK!\n");

MIB_IPNETTABLE * pIpNetTable2 = (MIB_IPNETTABLE *) new char[0xFFFF];

	SOCKET udp_s;
	SOCKADDR_IN udp_sin;
	udp_s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	if(udp_s!=SOCKET_ERROR)
	{
		udp_sin.sin_family = AF_INET;
		udp_sin.sin_port = htons(5232); //Шлём на любой порт.
		if(sendto(udp_s, "TEST", 5, NULL, (SOCKADDR*)&udp_sin, sizeof(udp_sin))>0)
		{ //Пакет отослан. Вытаскиваем MAC-адрес из системы
		 Sleep(3000);//задержка системы чтобы все пакеты дошли
			MIB_IPNETTABLE * pIpNetTable = (MIB_IPNETTABLE *) new char[0xFFFF];

			ULONG cbIpNetTable = 0xFFFF;
			if (NO_ERROR == GetIpNetTable (pIpNetTable, &cbIpNetTable, TRUE))
			{
				for (DWORD i = 0; i < pIpNetTable->dwNumEntries; i++) //Количество записей в таблице
				{
			
					struct in_addr paddr;
					paddr.S_un.S_addr = pIpNetTable->table[i].dwAddr;
				   char *r= inet_ntoa(paddr);
				   int tt=strlen(r);
				   for(int t=0;t<tt;t++) cout<<r[t];


						printf(" IP:%X MAC:%X-%X-%X-%X-%X-%X\n", pIpNetTable->table[i].dwAddr,
									pIpNetTable->table[i].bPhysAddr[0],
									pIpNetTable->table[i].bPhysAddr[1],
									pIpNetTable->table[i].bPhysAddr[2],
									pIpNetTable->table[i].bPhysAddr[3],
									pIpNetTable->table[i].bPhysAddr[4],
									pIpNetTable->table[i].bPhysAddr[5]);


			 }
			 printf("MAC-address not found\n");
			 delete[] pIpNetTable;
			}
			else printf("ERROR Open IPMAC table\n");
		}
        else printf("Send data ERROR!\n");

		closesocket(udp_s);
    }
	else printf("ERROR open socket\n");
	  // cout<<pIpNetTable->table[1].bPhysAddr[4];
	 system("pause");
	   //	delete[] pIpNetTable;
									closesocket(udp_s);
	WSACleanup();         //Освобождаем ресурсы


	return 0;
	 system("pause");
}

Drago56 вне форума   Ответить с цитированием
Старый 26.01.2016, 03:14   #2
Базиля
Профессионал
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Адрес: СПб
Сообщений: 1,013
Репутация: 327
По умолчанию

Вы уверены что все узлы входят в общую подсеть?
О чем говорит вывод таблицы через утилиту arp?
Базиля вне форума   Ответить с цитированием
Старый 28.01.2016, 12:05   #3
Drago56
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 91
Репутация: 8
По умолчанию

Всем узлам роутер дает адреса,внутри сети, тока когда делаю arp запрос не всегда видит устройства
Drago56 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование протоколов ICMP и ARP alexchromets Помощь студентам 0 02.10.2013 22:55
ARP vova65 Assembler 0 04.12.2011 14:01
DDoS & ARP + winPcap iGlass Работа с сетью в Delphi 2 18.04.2010 07:05
arp-спуфинг Romeo Ordos Работа с сетью в Delphi 5 30.10.2008 11:18
Реализовать такую тему как в винде ( arp -a ), получить ARP таблицу APOSTOL Работа с сетью в Delphi 3 07.06.2007 12:15


15:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru