如何正确捕获服务器的初始响应?

时间:2013-09-11 12:24:43

标签: c++ sockets ftp winsock recv

我的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 Response Server Ready” - 这正是我所需要的。但是在第二次运行相同的函数之后(第一次运行之后),它什么都不返回(因为recv()返回-1)。 Wireshark告诉我服务器确实没有发送响应。之后我在测试函数调用之间暂停了半秒,现在它可以正常工作,但这个解决方案是不需要的。 问题是:如何正确捕获服务器(不仅是ftp,还有其他任何其他)初始响应?

1 个答案:

答案 0 :(得分:0)

我认为你不需要抓住服务器的答案。如果你的程序连接到某个端口,那么某个服务器会监听这个端口并且没问题。所以只需打开连接并检查套接字变量。

PS:很多服务器在你向他们发送数据之前都没有做任何事情(不确定FTP),你必须发送一些东西才能得到答案。但要获得地位成功连接就足够了。