服务器连接成功、只是服务器端不接收文件内容、一直等待Socket dataSocket = serverDataSocket.accept();
package test;
import java.io.*;
import java.net.*;
public class HelloWordFTP {
private static final int CTRLPORT = 21;
private static Socket ctrlSocket;
private static PrintWriter ctrlOutput;
private static BufferedReader ctrlInput;
private static byte[] localHostAddress;
public static void main(String[] args) {
try {
String host = "10.36.254.27 ";
String loginName = "eptftp ";
String password = "ept ";
String dirName = "/Inetpub/ftproot/userhome/Localuser/eptftp ";
String fileName = "C:\\temp\\Seikyusyo.txt ";
ctrlSocket = new Socket(host, CTRLPORT);
System.out.println( "dd ");
localHostAddress = ctrlSocket.getLocalAddress().getAddress();
ctrlOutput = new PrintWriter(ctrlSocket.getOutputStream());
ctrlInput = new
BufferedReader(new InputStreamReader(ctrlSocket.getInputStream()));
ctrlOutput.println( "USER " + loginName);
ctrlOutput.flush();
ctrlOutput.println( "PASS " + password);
ctrlOutput.flush();
ctrlOutput.println( "CWD " + dirName);
ctrlOutput.flush();
ctrlOutput.println( "TYPE I ");
ctrlOutput.flush();
System.out.println( "write begin ");
FileInputStream fis = new FileInputStream(fileName);
Socket dataSocket = dataConnection( "STOR " + fileName);
OutputStream outstr = dataSocket.getOutputStream();
int n;
byte[] buff = new byte[1024];
while ((n = fis.read(buff)) > 0) {
outstr.write(buff,0,n);
System.out.println(n);
}
dataSocket.close();
fis.close();
System.out.println( "write end ");
ctrlOutput.close();
ctrlInput.close();
ctrlSocket.close();
}catch (Exception e) {
e.printStackTrace();
}
}
private static Socket dataConnection(String ctrlcmd)
throws IOException,UnknownHostException {
String cmd = "PORT ";
ServerSocket serverDataSocket = new ServerSocket(0,1);
for (int i=0;i <4;i++) {
cmd = cmd + (localHostAddress[i] & 0xff) + ", ";
}
cmd = cmd + (((serverDataSocket.getLocalPort())/256) & 0xff)
+ ", "
+ (serverDataSocket.getLocalPort() & 0xff);
ctrlOutput.println(cmd);
ctrlOutput.flush();
ctrlOutput.println(ctrlcmd);
ctrlOutput.flush();
Socket dataSocket = serverDataSocket.accept();
serverDataSocket.close();
return dataSocket;
}
}
[解决办法]
Socket类继承线程类。
[解决办法]
你的数据发送到21端口,你的服务器端在哪监听呢??
ServerSocket serverDataSocket = new ServerSocket(0,1); //????