Я не настоящая сеть, поэтому я немного борюсь с этим. Я получил демоверсию веб-сервера в порядке. Теперь я пытаюсь построить клиент-серверное соединение между Qt Creator Server на ПК и очень простым клиентом на плате. Я запустил демо-код для запуска платы, а затем вызвал tcpOpen(), который, как я ожидал, потерпит неудачу, если он не сможет найти сервер (Y/N?). Вот что включено в моем TCPIPCONFIG.H файле:Как получить простой TCP-клиент, работающий на стартовой плате PIC32 Ethernet?
#define STACK_USE_ICMP_SERVER // Ping query and
#define STACK_USE_ICMP_CLIENT // Ping transmission capability
#define STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE // HTTP Client
#define STACK_USE_TCP_PERFORMANCE_TEST // Module for testing TCP TX
В основном я (помните, что функции, вызываемые из основной() были взяты из демки):
int main(void)
{
static DWORD t = 0;
static DWORD dwLastIP = 0;
static TCP_SOCKET MySocketClient;
// Initialize application specific hardware
InitializeBoard();
// Initialize stack-related hardware components that may be
// required by the UART configuration routines
TickInit();
// Initialize Stack and application related NV variables into AppConfig.
InitAppConfig();
// Initialize core stack layers (MAC, ARP, TCP, UDP) and
// application modules (HTTP, SNMP, etc.)
StackInit();
// Allocate a socket for this client to try and perform pings
// From the internet: You_need_to_enable STACK_USE_DNS in TCPIPConfig.h to use TCP_OPEN_ROM_HOST
MySocketClient = TCPOpen((DWORD)(PTR_BASE)"169.254.13.41", TCP_OPEN_RAM_HOST, 9999, TCP_PURPOSE_GENERIC_TCP_CLIENT);
if(MySocketClient == INVALID_SOCKET)
{while(1){}};
SOCKET_INFO *remoteSockInfo;
remoteSockInfo = TCPGetRemoteInfo(MySocketClient);
etc.
призыв к TCPOpen() всегда возвращает 0 (что кажется действительным, когда я проверяю remoteSockInfo). Однако не имеет значения, подключен ли Ethernet к плате или нет или какой-либо другой IP-адрес, который я использую в этом вызове.
Не могли бы вы ожидать, что призыв к неудаче в этих обстоятельствах?
Спасибо,
Джо Б.
PS: Я на ПК компаний пытаются проверить эту доску, так что любая сеть слежки программного обеспечения (как Wireshark) не допускается ... Я буду скоро перейдете в лабораторию и тогда у вас будет больше автономии.
EDIT: Я нашел исходный код для GenericTCPClient.c и вижу, что вызов tcpOpen() создает сокет и активно пытается подключиться к серверу. Итак, теперь, наверное, мой вопрос будет, будет ли плата/сокет отвечать на пинги в этом состоянии (т. Е. Еще не подключен к серверу)?