我在c中使用一个简单的ftp服务器.我不知道ftp服务器何时接受来自客户端的被动数据连接.据我所知,ftp是被动的:
我的问题是:什么时候ftp服务器接受连接到所述随机端口?发送回复后服务器应该接受数据连接吗?或者ftp服务器是否应该在需要数据连接之前接受连接,即客户端请求文件?
我有RFC959.还有其他有用的ftp资源吗?谷歌不是特别有帮助.
提前致谢
在发送227回复之前,我会让服务器开始接受该端口上的连接(通过调用listen()).如果您等到发送227后,客户端可能会在您接受连接之前尝试连接,并收到"连接被拒绝"错误.
在调用listen()启动TCP系统监听之后,您可以accept()在准备开始接受连接时进行呼叫.何时调用这是一个应用程序级决策(但显然一旦客户端发送数据传输命令,它就会想要连接).来自客户端的连接将在接受队列中等待,直到服务器实际调用accept(),从而将它们从接受队列中删除.