Я пытаюсь настроить FTP-сервер на Java в своей локальной сети через Wi-Fi.И я застрял с обработкой команды EPSV ALL
.В качестве клиента я использую VLC player на iPhone.Он посылает EPSV ALL
на сервер, когда я пытаюсь воспроизвести файл .mp4.Ответ сервера с этой строкой:
"229 Entering Extended Passive Mode (|||" + freeDataPort + "|)"
Сервер создает serverSocket
на freeDataPort
, прослушивает соединение о доходе и ничего не происходит.
Я пробовал открыть фильм с подключением к серверу FileZilla - все работает.Также я не могу понять, почему клиент пытается установить второе соединение (соединение, которое запрашивает пользователя и передает снова) после этой команды (EPSV
), в то время как команда PASV
создает соединение данных и выполняет простую передачу данных, как ответ на LIST
, обработано в первом.
Это обработчик для EPSV
, который я использую:
private void handleEpsv() {
sendMsgToClient("229 Entering Extended Passive Mode (|||" + freeDataPort + "|)");
try {
dataSocket = new ServerSocket(freeDataPort);
System.out.println("waiting for connect... port: " + freeDataPort);
dataConnection = dataSocket.accept();
dataOutWriter = new PrintWriter(dataConnection.getOutputStream(), true);
} catch (IOException e)
{
debugOutput("Could not create data connection.");
e.printStackTrace();
}
}
То, что это привело в последний раз:
FTP Server started listening on port 21
{/192.168.0.105=INITIALThread-0 Threads in data list: 0}
New connection received. Worker was created.
from INITIAL THREAD
Thread-0 - send to client: 220 Welcome to the FTP-Server
USER a from INITIAL THREAD
Thread-0 - send to client: 331 User name okay, need password
PASS a from INITIAL THREAD
Thread-0 - send to client: 230 User logged in successfully
SYST from INITIAL THREAD
Thread-0 - send to client: 215 UNIX Type: L8
PWD from INITIAL THREAD
Thread-0 - send to client: 257 "/"
TYPE I from INITIAL THREAD
Thread-0 - send to client: 200 OK
CWD // from INITIAL THREAD
Thread-0 - send to client: 250 CWD successful. / is current directory
PASV from INITIAL THREAD
Thread-0 - send to client: 227 Entering Passive Mode (192,168,0,199,7,232)
waiting for connect... port: 2024
Data connection - Passive Mode - established
LIST from INITIAL THREAD
Thread-0 - send to client: 125 Opening ASCII mode data connection for file list.
from INITIAL THREAD
Thread-0 - send to client: 226 Transfer complete.
{/192.168.0.105=INITIALThread-0 Threads in data list: 1}
New connection received. Worker was created.
Thread-1 - send to client: 220 Welcome to the FTP-Server
FEAT
Thread-1 - send to client: 211-Features:
Thread-1 - send to client: MDTM
Thread-1 - send to client: REST STREAM
Thread-1 - send to client: SIZE
Thread-1 - send to client: MLST type*;size*;modify*;
Thread-1 - send to client: MLSD
Thread-1 - send to client: UTF8
Thread-1 - send to client: CLNT
Thread-1 - send to client: MFMT
Thread-1 - send to client: EPSV
Thread-1 - send to client: EPRT
Thread-1 - send to client: 211 END
USER a
Thread-1 - send to client: 331 User name okay, need password
PASS a
Thread-1 - send to client: 230 User logged in successfully
EPSV ALL
Thread-1 - send to client: 229 Entering Extended Passive Mode (|||2025|)
used by Thread-1 Thread DATA type
waiting for connect... port: 2025