我不是真正的网络精明,所以我有点挣扎。我的网络服务器演示工作正常。现在,我试图在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(即尚未连接到服务器)?答案 0 :(得分:0)
如果您在堆栈配置中启用了Ping,则主板将仅响应Ping:(tcpip_config.h)
编辑:我看到你启用了它,错过了。我会看到我可以从我的代码中挖掘出可能有用的内容。