# 3 "kleine" Probleme zu meinem Applet



## Christian84 (31. Jan 2008)

moin,

vorab,ich bin nicht der java freak. ich habe 3 probleme mit meinem applet:

1.) meine applet soll je nach Index in der Combo box eine Zeile in einer Datei auslesen. Der Substring funktioniert soweit   . Allerdings ließt er nur was aus, wenn der Index null ist (Alles Sensoren), sonst ferhlermeldung. 

2.) Die Datei die er auslesen soll liegt auf einem Webserver, in dem gleichen Verzeichnis wie auch das Applet liegt. Ich habe schon einiges versucht aber es klappt einfach nicht, dass er vom Webserver ließt.

3.) Wenn dass alles funktioniert, soll er ein *.bin Datei auf dem Webserver erstellen. Wenn möglich in einem anderen Verzeichnis.


Ich hoffe ihr könnt mir helfen. Danke


```
import javax.swing.*; 

import java.awt.Container; 
import java.awt.GridLayout; 
import java.awt.event.*; 
import java.io.*;
import java.text.*;
import java.util.*;
import java.lang.*;

public class Frame extends JFrame implements ActionListener 
{ 
  JLabel Label1, Label2, Label3; 
  JTextField Text; 
  JButton OK; 
  JComboBox Box;
  
  public Frame() 
  { 
    setSize(400, 120); 
    setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
    Container contentPane = getContentPane(); 
    contentPane.setLayout(new GridLayout(3, 2)); 
    Label1 = new JLabel("Wählen Sie einen Sensor"); 
    Label2 = new JLabel("Eingabe Abtastrate in min:"); 
    Label3 = new JLabel(""); 
    Box = new JComboBox(); 
    Text = new JTextField(); 
    OK = new JButton("OK"); 
    OK.addActionListener(this); 
    contentPane.add(Label1); 
    contentPane.add(Box); 
    contentPane.add(Label2); 
    contentPane.add(Text); 
    contentPane.add(Label3); 
    contentPane.add(OK);
    
    Box.setModel(new javax.swing.DefaultComboBoxModel(new String[] { 
"Alle Sensoren", "Sensor 1", "Sensor 2", "Sensor 3", "Sensor 4", "Sensor 5",
 "Sensor 6", "Sensor 7", "Sensor 8", "Sensor 9", "Sensor 10" }));
  }

  	public void actionPerformed(ActionEvent ev) 
  	{ 

  		 				  
  				  String s;
  				  String sb,nl,bt1,bt2,bt3,bt4,bt5,bt6,aa,ut1,ut2,ut3,ut4,nt,dl,eb1,eb2;
  				  Integer dd;
  				  Integer dds;
  				  Integer zeile;
  				  Integer i;
  				  String bt= null;
  				  
  				  //Startbyte sb
  				  sb="FF";
  				  
  				  //Nachrichtenlänge nl
  				  nl="0E";
  				  
  				  //Adresssierungsart aa
  				  aa=convert(Box.getSelectedIndex());
  				 
  				  //Bluetooth-Adresse bt
  				  zeile=index1(Box.getSelectedIndex());
  				  
  				    				  
  			  	  try {
					  BufferedReader in = new BufferedReader(
			                              new InputStreamReader(
			                              new FileInputStream( "E:/bta.txt" ) ) );

					  for (i=0; i==zeile; i++) {
						  bt=in.readLine();
					  }
					  in.close();
			      } 
				  catch( FileNotFoundException ex ) {
					  System.out.println( ex );
			      } 
				  catch( Exception ex ) {
			        System.out.println( ex );
			      }
				  bt1 = bt.substring(0,2);//einzelnen Bytes
                  bt2 = bt.substring(2,4);
                  bt3 = bt.substring(4,6);
                  bt4 = bt.substring(6,8);
                  bt5 = bt.substring(8,10);
                  bt6 = bt.substring(10,12);
                  System.out.println( bt1 );
                  System.out.println( bt2 );
                  System.out.println( bt3 );
                  System.out.println( bt4 );
                  System.out.println( bt5 );
				  System.out.println( bt6 );
  					     
  				  //Unix-Time ut
  				  ut1="00";
  				  ut2="00";
  				  ut3="00";
  				  ut4="00";
  				  
  				  //Nachrichtentyp nt 
  				  nt="11";
  				  
  				  //Datenlänge dl
  				  dl="01";
  				  
  				  //Daten dd
  				    				  
  				  dd=Integer.parseInt(Text.getText());
  				  dds = (dd*60)/10;
  								  
  				  //Endebyte eb
  				  eb1="FE";
  				  eb2="FE";
  				    
  		          try {
  		              FileOutputStream out=new FileOutputStream("E:/command.bin");
  		               		              
	  		            out.write(Integer.parseInt(sb, 16));
	  		            out.write(Integer.parseInt(nl, 16));
	  		            out.write(Integer.parseInt(aa, 16));
	  		            out.write(Integer.parseInt(bt1, 16));
			            out.write(Integer.parseInt(bt2, 16));
			            out.write(Integer.parseInt(bt3, 16));
			            out.write(Integer.parseInt(bt4, 16));
			            out.write(Integer.parseInt(bt5, 16));
			            out.write(Integer.parseInt(bt6, 16));
	  		            out.write(Integer.parseInt(ut1, 16));
	  		            out.write(Integer.parseInt(ut2, 16));
	  		            out.write(Integer.parseInt(ut3, 16));
	  		            out.write(Integer.parseInt(ut4, 16));
	  		            out.write(Integer.parseInt(nt, 16));
	  		            out.write(Integer.parseInt(dl, 16));
	  		            out.write(dds);
	  		            out.write(Integer.parseInt(eb1, 16));
	  		            out.write(Integer.parseInt(eb2, 16));
	  		            out.close();

  		        } 
  				  
  				  catch( IOException ex ) {
  			      System.out.println( ex );

  		}
  	}
  				  
  	String convert(int index) {
  		String aa;
  			aa = "55";
		if (index == 0) {
			aa = "80";
			}
		return aa;
  	}

  	
  	int index1(int index) {
  	int zeile = 0;
		
	if (index>=0) {
		zeile = index;
		}
	return zeile;
		}
		
}
```

_[Edit by Beni: ein paar zusätzliche Zeilenumbrüche im Code]_


----------



## Wildcard (31. Jan 2008)

1. Das ist kein Applet  ???:L  :autsch: 
2. Applets laufen auf dem Client und nicht auf dem Server.


----------



## Christian84 (31. Jan 2008)

Ja ich weiß. Die Applikation ist in ein applet eingebaut:


```
import javax.swing.*; 
import java.awt.BorderLayout; 
import java.awt.event.*; 

public class BGUI extends JApplet implements ActionListener 
{ 
  JButton Start; 
  Frame Window; 

  public void init() 
  { 
    getContentPane().setLayout(new BorderLayout()); 
    Start = new JButton("Start"); 
    Start.addActionListener(this); 
    getContentPane().add(Start, BorderLayout.CENTER); 
    Window = new Frame(); 
  } 

  public void actionPerformed(ActionEvent ev) 
  { 
    Window.show(); 
  } 
}
```


----------



## Wildcard (31. Jan 2008)

Das ändert an deinem Problem aber nichts. Ein Applet läuft auf dem Client, nicht auf dem Server.


----------



## Guest (31. Jan 2008)

hmm. und da gibts keine möglichkeit? 

hab mal was üder import java.net.* gelesen. Oder gibts die möglichkeit,dass die *bin datei über ftp oder telnet übertragen wird?


----------



## Wildcard (31. Jan 2008)

Über FTP, WebDAV,... kannst du übertragen was du willst, musst dir aber im Klaren darüber sein, dass diese Möglichkeit dann jedem (also auch ohne Applet) offen steht.


----------



## Christian84 (31. Jan 2008)

ok also ist die sache net so einfach. ginge es denn wenigsten mit meinem code, dass ich die *.txt,die als input dient und direkt im ordner zusammen mit der jar+class datei liegt als input nehme? wenn er nur die *.bin datei lokal erzeugt und ich sie dann manuell hochladen muss wäre das nicht so schlimm.


----------



## Wildcard (31. Jan 2008)

Wenn der Server sie ausliefert über die URL, oder die Datei direkt in das jar packen.


----------



## Christian84 (31. Jan 2008)

na das hört sich net so schlecht an. und wie müsste ich den code ändern, damit ich die datei von einem webserver aus als input nehmen kann?


----------



## Wildcard (31. Jan 2008)

```
URL url = new URL("fooBar");
InputStream in = url.openConnection();
```


----------



## Christian84 (31. Jan 2008)

hmm irgendwie übernimmt er den code net. ich brauche auf jeden fall noch die schleife, sodass er je nachindex in der combox auch die richtige zeile in der txt datei ausließt und als input nimmt. in der txt datei stehen bluetoothadressen;also auch Buchstaben. 
kannst du nochmal nachschauen, was bei meiner methode für das auslesen des index der combobox im bezug auf das auslesen der zeile in der txt datei nicht stimmt. er ließt bis jetzt nur zeile 1 ein, wenn in der combobox index0 ausgewählt wird. Es soll aber so sein: Alle Sensoren=Zeile1, Sensor1=Zeile2 usw...


```
//Bluetooth-Adresse bt
  				  zeile=index1(Box.getSelectedIndex());
  				  
  				    				  
  			  	  try {
  			  		  //URL url = new URL("http://www.blaaaaa/bta.txt");
  			  		  //InputStream in = url.openConnection();
					  BufferedReader in = new BufferedReader(
			                              new InputStreamReader(
			                              new FileInputStream( "C:/IPC/bta.txt" ) ) );

					  for (i=0; i==zeile; i++) {
						  bt=in.readLine();
					  }
					  in.close();
			      } 
				  catch( FileNotFoundException ex ) {
					  System.out.println( ex );
			      } 
				  catch( Exception ex ) {
			        System.out.println( ex );
			      }
		  bt1 = bt.substring(0,2);//einzelnen Bytes
                  bt2 = bt.substring(2,4);
                  bt3 = bt.substring(4,6);
                  bt4 = bt.substring(6,8);
                  bt5 = bt.substring(8,10);
                  bt6 = bt.substring(10,12);
                  System.out.println( bt1 );
                  System.out.println( bt2 );
                  System.out.println( bt3 );
                  System.out.println( bt4 );
                  System.out.println( bt5 );
		  System.out.println( bt6 );

.............

  	int index1(int index) {
  	int zeile = 0;
		
	if (index>=0) {
		zeile = index;
		}
	return zeile;
		}
```


----------



## Christian84 (1. Feb 2008)

so es läuft nun, dass die daten vom webserver eingelesen werden können. Ich habe nur noch folgende Probleme:

1) wie übertrage ich die erzeugte bin datei am besten?

2) kennt jemand ne möglichkeit, das ein applet nur die aktuellste datei als input nimmt. die dateinamen werden fortlaufend geschriebt. xxx000.dat, xxx001.dat


----------

