如何让一个简单的TCP客户端在PIC32以太网启动板上工作?

时间:2015-02-09 12:08:28

标签: tcpclient ethernet tcp-ip pic32

我不是真正的网络精明,所以我有点挣扎。我的网络服务器演示工作正常。现在,我试图在PC上的Qt Creator Server和板上的一个非常基本的客户端之间构建客户端 - 服务器连接。我抄袭了演示代码来初始化电路板,然后调用了tcpOpen(),如果它找不到服务器(Y / N?),我预计会失败。 这是我在TCPIPCONFIG.H文件中启用的内容:

#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 

在main中,我有(请记住,从main()调用的函数是从演示中获取的):

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时,这似乎是有效的)。但是,如果以太网插入电路板或者没有插入电路板,或者我在该电话中使用的任何IP地址都无关紧要。

在这种情况下,你不希望这个电话失败吗?

谢谢,

乔B.

PS:我正在试图测试这块主板的公司PC上,所以不允许任何网络窥探软件(如wireshark)......我很快就会搬到实验室,并且会有更多那么自治。

编辑:我找到了GenericTCPClient.c的源代码,看到tcpOpen()调用创建了套接字,并且正在尝试连接到服务器。所以,现在我想我的问题是,电路板/插座是否会响应此状态下的ping(即尚未连接到服务器)?

1 个答案:

答案 0 :(得分:0)

如果您在堆栈配置中启用了Ping,则主板将仅响应Ping:(tcpip_config.h)

编辑:我看到你启用了它,错过了。我会看到我可以从我的代码中挖掘出可能有用的内容。