Probleme bei Dateiupload mit socket

Status
Nicht offen für weitere Antworten.

Christian_cl

Mitglied
Hallo zusammen!
Ich versuche mit einer Socketverbindung Dateien zwischen einem PC und einem Roboter auszutauschen über ftp (port 21). Ein downlad funktioniert einwandfrei mit meiner nachfolgenden Klasse. Der Download allerdings nicht. Ich bekomme die Fehlermeldung "550 Requires PROGRAM password" vom Roboter zurück.
Interresant sind die Funktionen upload bzw. download und openPassiveMode.
Ich weiß da leider nicht mehr weiter. Das Problem würd ich schon gern mittels Socket lösen, also nicht mit FtpClient von der sun-Seite oder sowas. Würd mich freuen, wenn mir da einer weiterhelfen kann.

Code:
class FtpSession
{
 private String aAdress;
 private Socket aSocket = null;                                      //socket for connection
 private Socket transferSocket = null;                               //socket for data transfer

 private DataOutputStream dataOut;                                   //stream for ftp commands to robot
 private DataInputStream dataIn;                                     //stream for ftp answers from robot
 private InputStream transIn;                                        //instream for file transfer
 private OutputStream transOut;                                      //outstream for file transfer
 
 private boolean debugMode = false;                                  //messages in console on/off
 private final int BLOCKSIZE = 1024;
 private final int PORT = 21;                                        //used ftp port is 21
 private final int TIMEOUT = 10000;                                  //connection time out after 10s
 
 //* errorcode variable to show Errormessage Dialog */
 private static int errorcode = 0;
 
 //* constructor for progressbar */
 private static ShowProgBar aProgressBar;
 
 public static boolean isconnected = false;

 
 //* connect to server */
 public int connect(String aServer, String aUser, String aPass)
 {
  aAdress = aServer;    
  try
  {  	
//   //show connection status
//   aProgressBar = new ShowProgBar();
//   aProgressBar.start();

   //connect to server and get streams for commands
   aSocket = new Socket(aServer, PORT);
   aSocket.setSoTimeout(TIMEOUT);
   dataIn = new DataInputStream(aSocket.getInputStream());
   dataOut = new DataOutputStream(aSocket.getOutputStream());
   getResponse();
   
   //interrupt progress bar, login and open passive mode if connected
   isconnected = aSocket.isConnected();
   if (isconnected == true)
   {
//	  aProgressBar.interrupt();
   	sendCommand("USER " + aUser);   
    getResponse();
    sendCommand("PASS " + aPass);
    getResponse();
    openPassiveMode();
   }
  }
  catch (IOException e)
  {
   e.printStackTrace();
   errorcode = 21;
//   if (!isconnected) aProgressBar.interrupt();
  }
  return errorcode;
 }


 //* close connection to server */
 public int disconnect()
 {
  try
  {
   if (aSocket != null)
   {
   	dataIn.close();
   	dataOut.close();
	aSocket.close();
	aSocket = null;
   }
   if (transferSocket != null)
   {
   	transIn.close();
   	transOut.close();
    transferSocket.close();
    transferSocket = null;
   }
  }
  catch (IOException e)
  {
   e.printStackTrace();
   if (errorcode == 0) errorcode = 22;
  }
  return errorcode;
 } 
 
 
 //* show messages in console (on/off) */
 public void showMessages(boolean b)
 {
  debugMode = b;
 }

 
 //* upload a file */
 public int upload(String from, String to)
 {
  try
  {
   openPassiveMode();
   
   sendCommand("TYPE I");                                            //binary mode
   getResponse();
   
   sendCommand("STOR " + to);
   getResponse();

   DataOutputStream out = new DataOutputStream(transOut);
   RandomAccessFile infile = new RandomAccessFile(from, "r");      //r = open only for read access
   
   byte buffer[] = new byte[BLOCKSIZE];
   int length;

   while ((length = infile.read(buffer, 0, BLOCKSIZE)) > 0)
   {
	out.write(buffer, 0, length);
   }
   
   infile.close();
   getResponse();
  }
  catch (IOException e)
  {
   e.printStackTrace();
   if (errorcode == 0) errorcode = 23;
  }
  return errorcode;
 }
 
 
 //* download a file */
 public int download(String from, String to)
 {
  try
  {
   openPassiveMode();
   sendCommand("TYPE I");                                            //binary mode
   getResponse();
   sendCommand("RETR " + from);
   getResponse();

   BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(to)));

   byte buffer[] = new byte[BLOCKSIZE];
   int length;

   while ((length = transIn.read(buffer, 0, BLOCKSIZE)) > 0)
   {
    out.write(buffer, 0, length);
   }
   out.close();
  }
  catch (IOException e)
  {
   e.printStackTrace();
   if (errorcode == 0) errorcode = 24;
  }
  return errorcode;
 }

 
 //* open passive mode */
 private void openPassiveMode()
 {
  try
  {
   sendCommand("PASV");
   String response = getResponse();
        
   //get passive mode string, like (10,0,2,53,42,34)
   int start = response.lastIndexOf('(');
   int end = response.lastIndexOf(')');
   String pasvString = response.substring(start+1, end);
   StringTokenizer st = new StringTokenizer(pasvString, ",");   
   int ipAddrArr[] = new int[6];
   for (int i = 0; st.hasMoreTokens(); i++)
    {ipAddrArr[i] = Integer.valueOf(st.nextToken()).intValue();}
   
   //create new port
   int port = (ipAddrArr[4] << 8) + ipAddrArr[5];                    //"<< 8" = multiply with 2^8  
   if (transferSocket != null)
    {transferSocket.close();}
  
   //open new connection with new port
   transferSocket = new Socket(aAdress, port);
   transIn = transferSocket.getInputStream();
   transOut = transferSocket.getOutputStream();   
  }
  catch (IOException e)
  {
   e.printStackTrace();
   if (errorcode == 0) errorcode = 26;
  }
 }

 
 //* send command to server */
 private void sendCommand(String aCommand) throws IOException
 {
  if (debugMode) System.out.println("PC => ROBOT: " + aCommand);
  dataOut.writeBytes(aCommand + "\n");
 }

 
 //* get response from server */ 
 private String getResponse()
 {
  String response = "",
  newLine  = null;
  try
  {
   do
   {
    newLine = dataIn.readLine();
    response += newLine;
    if (debugMode) System.out.println("PC <= ROBOT: " + newLine);
   }
   while(!(Character.isDigit(newLine.charAt(0)) &&
           Character.isDigit(newLine.charAt(1)) &&
           Character.isDigit(newLine.charAt(2)) && 
           newLine.charAt(3) == ' ')
		 );
  }
  catch (IOException e)
  {
   e.printStackTrace();
   return null;
  }
  return response;
 }
}
 

Christian_cl

Mitglied
Da noch keiner geantwortet hat erklär ich noch mal ein bisschen.

Ich mach also eine Socketverbindung für den Austausch der Befehle u. einen weiteren TCP-Port (>1023) für die Daten auf. Download funktioniert so mit dem Quellcode: connect->download->disconnect (mit entsprechenden Parametern. Mach ich aber anstelle von download einen upload (also zum server) gibts die Fehlermeldung: 550 Requires Program Password. Der Server ist übrigens ein FANUC-Roboter mit ftp-Funktionalität. Mit der Klasse zum FtpClient von sun geht der Upload, aber nicht mit meiner Socketlösung. Also kanns am Schreibschutz wahrscheinlich nicht hapern. Hat da vielleicht mal einer Erfahrungen mit socket gemacht? Es gibt zwar etliche Lösungsansätze aber ich hab leider nichts über mein Problem gefunden.

Wäre toll wenn jemand dazu was wüsste.
MfG, Christian.
 

Stefan1200

Top Contributor
Ich habe jetzt keine Antwort darauf, aber hast du schonmal kontrolliert, was der Sun FTP Client macht?
Eventuell mal mit Ethereal loggen.
 

Christian_cl

Mitglied
Danke für deine Antwort!

Hab mal Ethereal auf meinem Rechner instaliert, aber die Meldungen die ich beim Datentransfer aufzeichne sagen mir leider überhaupt nichts. Ich hab mit Ethereal noch nie gearbeitet.
 

welterde

Aktives Mitglied
ich sach nur Rechtsklick->Follow TCP Stream, da kommt der Text der gesendet/empfangen wurde

mfg welterde
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
M Dateiupload mittels HttpClient Netzwerkprogrammierung 3
M JavaApplet -> Parameterübergabe an PHP -> Dateiupload zum Server Netzwerkprogrammierung 6
G Jakarta Net Commons - FTPClient: Problem bei Dateiupload Netzwerkprogrammierung 2
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
B Versuch mit Socket etwas zu lesen und zu schreiben Netzwerkprogrammierung 15
G Socket Socket Kommunikation Netzwerkprogrammierung 1
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
D Socket-Verbindungen übers Internet Netzwerkprogrammierung 4
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
A TCP multiClientServer mit socket mittels ObjectOutputStream Netzwerkprogrammierung 12
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
M Socket Socket lehnt Verbindung ab Netzwerkprogrammierung 3
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
x46 Socket Files per Socket verschicken Netzwerkprogrammierung 1
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D new ObjectInputStream(socket.getInputStream()); Netzwerkprogrammierung 15
E Socket Frage Netzwerkprogrammierung 6
D ServerSocket - Socket Verbindungsart Netzwerkprogrammierung 3
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
F TCP Socket auf Verbindungsabbruch prüfen Netzwerkprogrammierung 15
F Socket Verbindung mit Verschlüsselung und Authentifierzung Netzwerkprogrammierung 1
I Socket ObjectOutputStream-Socket: Objekt wird falsch übertragen Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben