Hallo zusammen !
Wir wollen eine Datei von einem selbstgeschriebenen Server an einen selbstgeschriebenen Client senden. Wenn das geklappt hat, soll der Client die Datei dann auch per awt anzeigen (das sollte das kleinere Problem sein).
Wir haben bis jetzt folgendes vorzuweisen:
Client:
Server:
Es ist klar, dass der Server nicht die gewünschte Funktion erfüllt. Unser unangepasster Client (ohne Code zum Datei-Erzeugen, nur Übergabe von int's zum Addieren) kommunizierte aber schon gut mit dem obigen Server. Die Frage ist jetzt: Wie senden wir eine lokale Datei vom Server per Netzwerk an den Client? Und wie sieht der Empfang dann korrekt auf dem Client aus? Wir haben versucht uns für beide Programme das Benötigte aus verschiedenen Threads zusammenzulesen:
http://www.java-forum.org/de/topic47154_socket-client-server-verbindung-wie-strings-senden.html
http://www.java-forum.org/de/viewtopic.php?t=33319&highlight=datei+senden
http://www.java-forum.org/de/viewtopic.php?t=48460&highlight=datei+netzwerk
Leider haben wirs nicht geschafft eine Datei zu senden. Der Client erstellt zwar eine Datei, diese ist aber immer 0 Byte groß. Intelligenterweise habe ich den Code des Servers der das Bild öffnet und als Stream an den Client senden sollte unwiderbringlich gelöscht. Das war das dumme Resultat eines Versuchs, die Art der Erzeugung des Datenstreams zu verändern (neue Datei erstellt, alte gelöscht...*selbstgeißel*). Das Bild liegt lokal im Verzeichnis des Servers und heißt z.B. "smiley.gif".
Wie dem auch sei, wir stehen auf dem Schlauch. Für jegliche Hilfe sind wir überaus dankbar .
mfg,
BlackWizard
Wir wollen eine Datei von einem selbstgeschriebenen Server an einen selbstgeschriebenen Client senden. Wenn das geklappt hat, soll der Client die Datei dann auch per awt anzeigen (das sollte das kleinere Problem sein).
Wir haben bis jetzt folgendes vorzuweisen:
Client:
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
public class gui extends Frame{
private static final long serialVersionUID = 1L;
static ServerSocket tcpSocket;
static File saveFile;
class TestActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try {
Socket server = new Socket (IP_Adresse, Port);
InputStream input = server.getInputStream();
OutputStream output = server.getOutputStream();
output.write(pixel_zahl1);
output.write(pixel_zahl2);
output.flush();
System.out.println(input.read());
server.close();
input.close();
output.close();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
byte[] fileStream = new byte[1000000];
FileOutputStream fileOutput = new FileOutputStream("bild2.gif");
Socket server = tcpSocket.accept();
InputStream in = server.getInputStream();
byte[] buffer = new byte[1024];
for (int n; (n = in.read(buffer)) != -1; fileOutput.write(buffer, 0, n));
in.close();
fileOutput.close();
server.close();
tcpSocket.close();
} catch (IOException e1) {
System.out.println("Ausgabe fehler");
//e.printStackTrace();
}
}
}
public static void main (String args[])
{
new gui();
}
}
Server:
Code:
import java.net.*;
import java.io.*;
public class KleinerServer2 {
ServerSocket server = new ServerSocket(1234);
KleinerServer2() throws IOException{
while(true){
Socket client = server.accept();
InputStream input = client.getInputStream();
OutputStream output = client.getOutputStream();
int zahl1 = input.read();
int zahl2 = input.read();
output.write(zahl1+zahl2);
output.flush();
input.close();
output.close();
}
}
public static void main(String[] argv){
try {
new KleinerServer2();
}
catch(IOException e){
System.out.println(e);
}
}
}
Es ist klar, dass der Server nicht die gewünschte Funktion erfüllt. Unser unangepasster Client (ohne Code zum Datei-Erzeugen, nur Übergabe von int's zum Addieren) kommunizierte aber schon gut mit dem obigen Server. Die Frage ist jetzt: Wie senden wir eine lokale Datei vom Server per Netzwerk an den Client? Und wie sieht der Empfang dann korrekt auf dem Client aus? Wir haben versucht uns für beide Programme das Benötigte aus verschiedenen Threads zusammenzulesen:
http://www.java-forum.org/de/topic47154_socket-client-server-verbindung-wie-strings-senden.html
http://www.java-forum.org/de/viewtopic.php?t=33319&highlight=datei+senden
http://www.java-forum.org/de/viewtopic.php?t=48460&highlight=datei+netzwerk
Leider haben wirs nicht geschafft eine Datei zu senden. Der Client erstellt zwar eine Datei, diese ist aber immer 0 Byte groß. Intelligenterweise habe ich den Code des Servers der das Bild öffnet und als Stream an den Client senden sollte unwiderbringlich gelöscht. Das war das dumme Resultat eines Versuchs, die Art der Erzeugung des Datenstreams zu verändern (neue Datei erstellt, alte gelöscht...*selbstgeißel*). Das Bild liegt lokal im Verzeichnis des Servers und heißt z.B. "smiley.gif".
Wie dem auch sei, wir stehen auf dem Schlauch. Für jegliche Hilfe sind wir überaus dankbar .
mfg,
BlackWizard