java.net.SocketException:使用TelnetOutputStream重置连接
可能重复:java.net.SocketException:使用TelnetOutputStream重置连接,java,socketexception,Java,Socketexception,可能重复: 此异常可能意味着在网络的底层(即TCP层)发生错误 TCP数据包没有从服务器返回ACK信号 这需要使用网络数据包分析工具进一步分析网络数据包,如 或 尝试实现重试机制(但我仍然建议从网络层查找根本原因) 再观察一次,错误读取为连接重置,而不是由对等方重置的连接。请怀疑是错误在客户端造成的。此异常有几个原因,但最常见的是您写入了已由对等方关闭的连接,这会导致对等方发送TCP RST段(重置)。换句话说,是应用程序协议错误。以前有人问过问题。看看这个链接 public void sen
此异常可能意味着在网络的底层(即TCP层)发生错误 TCP数据包没有从服务器返回ACK信号 这需要使用网络数据包分析工具进一步分析网络数据包,如 或 尝试实现重试机制(但我仍然建议从网络层查找根本原因)
再观察一次,错误读取为
连接重置
,而不是由对等方重置的连接
。请怀疑是错误在客户端造成的。此异常有几个原因,但最常见的是您写入了已由对等方关闭的连接,这会导致对等方发送TCP RST段(重置)。换句话说,是应用程序协议错误。以前有人问过问题。看看这个链接
public void sendJobs(String hostname, int port, String username, String password, String folderName, Collection<File> files) throws Exception {
FtpClient ftp = new FtpClient(hostname, port);
ftp.login(username, password);
ftp.binary();
//ftp.cd("FTP_Hiring"); // this is for testing in Accel FTP. comment for other FTP
if(folderName != "") {
ftp.cd(folderName);
}
try {
for(File file : files) {
FileInputStream fos = new FileInputStream(file);
TelnetOutputStream tos = (TelnetOutputStream) ftp.put(file.getName());
try {
//ftp.cd(file.getName().substring(0, file.getName().lastIndexOf(".")));
DataOutputStream dos = new DataOutputStream(tos);
byte[] buffer = new byte[1024 * 1024];
for (int length; (length = fos.read(buffer)) > 0;) {
dos.write(buffer, 0, length);
}
System.out.println("success");
tos.flush();
tos.close();
fos.close();
ftp.cdUp();
} catch(Exception e) {
hsLogger.error(e);
e.printStackTrace();
} finally {
tos.close();
fos.close();
}
}
} catch(Exception e) {
hsLogger.error(e);
e.printStackTrace();
}
}
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at sun.net.TransferProtocolClient.readServerResponse(TransferProtocolClient.java:49)
at sun.net.ftp.FtpClient.readReply(FtpClient.java:217)
at sun.net.ftp.FtpClient.issueCommand(FtpClient.java:193)
at sun.net.ftp.FtpClient.openDataConnection(FtpClient.java:383)
at sun.net.ftp.FtpClient.put(FtpClient.java:594)
at com.hiringsteps.ats.util.net.service.impl.JobXMLManagerService.sendJobs(JobXMLManagerService.java:1883)
at com.hiringsteps.ats.util.net.service.impl.JobXMLManagerService.postJobs(JobXMLManagerService.java:273)
at com.hiringsteps.ats.job.facade.impl.JobFacade$2.jobPosting(JobFacade.java:2031)
at com.hiringsteps.ats.job.facade.impl.JobFacade$2.run(JobFacade.java:1935)
at com.hiringsteps.ats.util.scheduler.service.impl.Scheduler$SchedulerTimerTask.run(Scheduler.java:20)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)