1

我的 C++ 程序正在尝试检查 ftp 服务器的状态。它使用 winsock 和简单的测试函数,看起来像这样(伪代码):

create a tcp socket
connect to port 21 of the server
do recv() while data is available
close socket
return received data

它不会使用 send() 向服务器发送任何数据 - 只是试图捕获服务器的初始响应。这实际上有效并返回“200 响应服务器就绪”——这正是我所需要的。但是在同一函数的第二次运行之后(在第一次运行之后立即)它什么也不返回(因为 recv() 返回-1)。Wireshark 告诉我服务器确实没有发送响应。之后,我在测试函数调用之间暂停了半秒,现在它可以工作了,但这个解决方案是不需要的。问题是:如何正确捕获服务器(不仅是 ftp,还有其他)的初始响应?

4

1 回答 1

0

我认为你不需要抓住服务器的答案。如果您的程序连接到某个端口,那么某些服务器正在侦听该端口并且可以。所以只需打开连接并检查套接字变量。

PS:很多服务器在你向它们发送数据之前什么都不做(不确定FTP),你必须发送一些东西才能得到答案。但是有状态成功连接就足够了。

于 2013-09-11T12:54:31.797 回答