Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C FTP实现:每次关闭数据套接字_C_Sockets_Ftp - Fatal编程技术网

C FTP实现:每次关闭数据套接字

C FTP实现:每次关闭数据套接字,c,sockets,ftp,C,Sockets,Ftp,我正在用c实现一种FTP协议 我有一台服务器正在运行。 我启动客户端,连接到服务器,然后发送一个GET file.txt请求。 客户端解析该命令,查看它是GET命令并启动服务器套接字。 服务器接收到该命令,并启动与客户端的数据连接,并在此连接上开始发送file.txt 服务器发送文件时,会关闭客户端套接字(数据) 当我想获取另一个文件时,该端口已在使用中。我怎样才能防止这种情况?我应该为所有命令连接会话保持数据连接打开吗?在这种情况下,我的客户如何知道文件何时结束 谢谢当套接字关闭时,它将进入时

我正在用c实现一种FTP协议

我有一台服务器正在运行。 我启动客户端,连接到服务器,然后发送一个
GET file.txt
请求。 客户端解析该命令,查看它是GET命令并启动服务器套接字。 服务器接收到该命令,并启动与客户端的数据连接,并在此连接上开始发送file.txt

服务器发送文件时,会关闭客户端套接字(数据)

当我想获取另一个文件时,该端口已在使用中。我怎样才能防止这种情况?我应该为所有命令连接会话保持数据连接打开吗?在这种情况下,我的客户如何知道文件何时结束


谢谢

当套接字关闭时,它将进入
时间等待
状态(),并且在套接字离开
时间等待
并处于
关闭
状态之前,其他套接字不能绑定到同一地址/端口对


您可以通过设置
SO\u REUSEADDR
socket选项来解决这个问题,如果其中一个套接字处于
TIME WAIT
状态,那么将允许两个套接字绑定到同一地址。

当套接字关闭时,它将进入
TIME WAIT
状态()并且,在套接字离开
时间等待
并处于
关闭
状态之前,不能将其他套接字绑定到同一地址/端口对


您可以通过设置
SO\u REUSEADDR
socket选项来解决这个问题,如果其中一个套接字处于
TIME WAIT
状态,那么将允许两个套接字绑定到同一地址。

当套接字关闭时,它将进入
TIME WAIT
状态()并且,在套接字离开
时间等待
并处于
关闭
状态之前,不能将其他套接字绑定到同一地址/端口对


您可以通过设置
SO\u REUSEADDR
socket选项来解决这个问题,如果其中一个套接字处于
TIME WAIT
状态,那么将允许两个套接字绑定到同一地址。

当套接字关闭时,它将进入
TIME WAIT
状态()并且,在套接字离开
时间等待
并处于
关闭
状态之前,不能将其他套接字绑定到同一地址/端口对


您可以通过设置
SO\u REUSEADDR
套接字选项来解决这个问题,如果其中一个套接字处于
时间等待
状态,则允许将两个套接字绑定到同一地址。

您需要每次打开套接字进行传输,因为传输完成后服务器将关闭它。 通过读取FTP服务器对状态代码(226或250)的响应,您将知道该文件已下载/上载-FTP服务器返回代码检查列表:

每次传输都需要打开套接字,因为传输完成后服务器会将其关闭。 通过读取FTP服务器对状态代码(226或250)的响应,您将知道该文件已下载/上载-FTP服务器返回代码检查列表:

每次传输都需要打开套接字,因为传输完成后服务器会将其关闭。 通过读取FTP服务器对状态代码(226或250)的响应,您将知道该文件已下载/上载-FTP服务器返回代码检查列表:

每次传输都需要打开套接字,因为传输完成后服务器会将其关闭。 通过读取FTP服务器对状态代码(226或250)的响应,您将知道该文件已下载/上载-FTP服务器返回代码检查列表:
在我的项目中,我使用apache commons net, 只需使用heartbeat命令保持命令连接的活动状态, 每次进行文件传输时,请进入本地被动模式。 这一原则同样适用于您的情况,我建议您发送

EPSV
获取file.txt之前的命令


请参阅:

在我的项目中,我使用apache commons net, 只需使用heartbeat命令保持命令连接的活动状态, 每次进行文件传输时,请进入本地被动模式。 这一原则同样适用于您的情况,我建议您发送

EPSV
获取file.txt之前的命令


请参阅:

在我的项目中,我使用apache commons net, 只需使用heartbeat命令保持命令连接的活动状态, 每次进行文件传输时,请进入本地被动模式。 这一原则同样适用于您的情况,我建议您发送

EPSV
获取file.txt之前的命令


请参阅:

在我的项目中,我使用apache commons net, 只需使用heartbeat命令保持命令连接的活动状态, 每次进行文件传输时,请进入本地被动模式。 这一原则同样适用于您的情况,我建议您发送

EPSV
获取file.txt之前的命令


参考:

这是ftp使用的方式吗?@FedericoPonzi我其实不知道,但这似乎合乎逻辑。它通常用于所有被动(监听)套接字。这是ftp使用的方式吗?@FedericoPonzi实际上不知道,但似乎合乎逻辑。它通常用于所有被动(监听)套接字。这是ftp使用的方式吗?@FedericoPonzi实际上不知道,但似乎合乎逻辑。它通常用于所有被动(监听)套接字。这是ftp使用的方式吗?@FedericoPonzi实际上不知道,但似乎合乎逻辑。它通常用于所有被动(监听)插座。