Member 14837073 Ответов: 1

Как написать программу для пинга в МФЦ?


мое требование Ethernet с модулем самопроверки с использованием тоскующих программ если у кого то есть идея просто дайте мне знать или помогите мне

Что я уже пробовал:

/*.СРР*/
#include "pch.h"
#include "MGTS.h"
#include "CUtilitiesTab.h"
#include "afxdialogex.h"
#define STRICT
#include <tchar.h>
#include <windows.h>
#include <winsock2.h>
#include <iphlpapi.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WIN32_LEAN_AND_MEAN

void CUtilitiesTab::OnBnClickedCheck2()
{
	<pre>int rc;
	IPAddr ia;
	MessageBeep(1000);
	UpdateData(TRUE);
	ia = inet_addr(m_ip_address);
	rc = NewPing(ia, (ULONG*)&m_hops_count, (ULONG*)&m_rtt);
	if (rc == 0)
		m_selftestresult.SetWindowTextW(_T("pass"));
	else			
		m_selftestresult.SetWindowTextW(_T("Host not responding or no route, rc = %d", rc));
	UpdateData(FALSE);
	MessageBeep(1000);
	return;

}



/*.h*/ файл hearder



class CUtilitiesTab : public CDialogEx
{
	DECLARE_DYNAMIC(CUtilitiesTab)

public:
	CUtilitiesTab(CWnd* pParent = nullptr);   // standard constructor
	virtual ~CUtilitiesTab();

	

// Dialog Data
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_UTILITIES };
#endif

protected:
	HICON m_hIcon;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	DECLARE_MESSAGE_MAP()
public:
	

	

	/*Ethernet*/

	IPHLPAPI_DLL_LINKAGE BOOL GetRTTAndHopCount(
		IPAddr DestIpAddress,
		PULONG HopCount,
		ULONG  MaxHops,
		PULONG RTT
	);
    CString   m_ip_address[4];
	long   m_hops_count;
	long	m_rtt;
	afx_msg void OnBnClickedCheck2();

};


Я получаю ниже ошибку ,но когда я ставлю
#pragma warning(disable:4996)
он удалит приведенную ниже ошибку .
Ошибка C4996 'inet_addr': вместо этого используйте inet_pton() или InetPton() или определите _WINSOCK_DEPRECATED_NO_WARNINGS, чтобы отключить устаревшие предупреждения API MGTS


как будто сейчас я совершаю эту ошибку ..

S
Error	LNK2019	unresolved external symbol __imp__GetRTTAndHopCount@16 referenced in function "int __cdecl NewPing(unsigned long,unsigned long *,unsigned long *)" (?NewPing@@YAHKPAK0@Z	1	



пожалуйста кто нибудь помогите мне'

Richard MacCutchan

В параметрах компоновщика отсутствует библиотека. Проверьте документацию на наличие Функция GetRTTAndHopCount.

Member 14837073

Я пытался, но та же проблема, с которой я сталкиваюсь

1 Ответов

Рейтинг:
0

OriginalGriff

Это поможет?
Ping для Windows[^]


Rick York

Боже мой, какая ужасная статья!

OriginalGriff

Ей девятнадцать лет, и с тех пор мы много переехали!

Rick York

По большей части я бы согласился. Я до сих пор иногда вижу исключения. Самое распространенное, что я вижу в последнее время, - это статьи, которые немного больше, чем руководство пользователя для программы. Код упоминается только вскользь. Прошло уже немного времени с момента последнего из них, так что я думаю, что тенденция к меньшему их количеству является позитивной.

Member 14837073

/*.СРР/*
void CUtilitiesTab::OnBnClickedCheck2()
{
int rc;
При ИА;
MessageBeep(1000);
UpdateData(TRUE);
ИА = сокеты inet_addr(m_ip_address);
РЦ = NewPing(ИА, (типа ulong*)&ампер;m_hops_count, (типа ulong*)&ампер;m_rtt);
если (rc == 0)
m_selftestresult.SetWindowTextW(_T("pass"));
еще
m_selftestresult.SetWindowTextW(то _t("хост не отвечает" или "нет маршрута, РК = %д", радиоуправляемый));
UpdateData(FALSE);
MessageBeep(1000);
вернуть;

}
int NewPing(IPAddr ia, ULONG* hops_count, ULONG* rtt)
{
логическое IsOk;

IsOk = GetRTTAndHopCount(ia, hops_count, 128, rtt); //вызов iphlpapi
if (IsOk == TRUE) возвращает 0;
возвращает код последней ошибки();
}

/*.ч*/


#ПРАГМА один раз


// Диалоговое окно CUtilitiesTab

//#ifndef __SERIAL_H__

класс CUtilitiesTab : public CDialogEx
{
DECLARE_DYNAMIC(CUtilitiesTab)

общественный:
CUtilitiesTab(CWnd* pParent = nullptr); // стандартный конструктор
виртуальный ~CUtilitiesTab();



// Диалоговые Данные
#ifdef AFX_DESIGN_TIME
перечисление { IDD = IDD_UTILITIES };
#endif

защищенный:
HICON m_hIcon;

// Функции карте сообщения
виртуальный BOOL OnInitDialog();
virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

DECLARE_MESSAGE_MAP()
общественный:
боол IsCheck1Checked;
И cbutton m_mil1553;
И cbutton m_ethernet;
И cbutton m_discrete;
CString в m_resultTxt;
afx_msg Void и OnBnClickedMfcbutton1();






/*Локальная сеть*/

чар m_ip_address[4];
длинный m_hops_count;
долго m_rtt;
afx_msg Void и OnBnClickedCheck2();
};

то, что я пробовал здесь.
здесь я просто объявляю IP-адрес как жесткий код , когда я нажимаю флажок, он должен видеть вывод в edittext, например "pass" или "fail"..

но вот я совершаю ошибку

Ошибка C4996 'inet_addr': вместо этого используйте inet_pton() или InetPton() или определите _WINSOCK_DEPRECATED_NO_WARNINGS, чтобы отключить устаревшие предупреждения API MGTS

если кто-нибудь может мне помочь, это было бы здорово.