2015-02-09 2 views
0

Я не настоящая сеть, поэтому я немного борюсь с этим. Я получил демоверсию веб-сервера в порядке. Теперь я пытаюсь построить клиент-серверное соединение между 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() создает сокет и активно пытается подключиться к серверу. Итак, теперь, наверное, мой вопрос будет, будет ли плата/сокет отвечать на пинги в этом состоянии (т. Е. Еще не подключен к серверу)?

ответ

0

Совет будет реагировать только на Ping, если вы включили Ping в конфигурации стека: (tcpip_config.h)

Edit: Я вижу, вы его включили, пропустил это. Я посмотрю, что я могу извлечь из моего кода, который может помочь.