Hirdetés

Keresés

Új hozzászólás Aktív témák

  • smallmer

    őstag

    válasz sztanozs #10150 üzenetére

    Köszönöm, de sajnos így sem megy át semmi, viszont most a neten találtam egy másik módszert:

    Server:
    package serverkliens;


    import java.io.DataInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class FileServer extends Thread {

    private ServerSocket ss;

    public FileServer(int port) {
    try {
    ss = new ServerSocket(port);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    public void run() {
    while (true) {
    try {
    Socket clientSock = ss.accept();
    saveFile(clientSock);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }

    private void saveFile(Socket clientSock) throws IOException {
    DataInputStream dis = new DataInputStream(clientSock.getInputStream());
    FileOutputStream fos = new FileOutputStream("F:/zene.mp3");
    byte[] buffer = new byte[12 * 4096];

    int filesize = 15123; // Send file size in separate msg
    int read = 0;
    int totalRead = 0;
    int remaining = filesize;
    while((read = dis.read(buffer, 0, Math.min(buffer.length, remaining))) > 0) {
    totalRead += read;
    remaining -= read;
    System.out.println("read " + totalRead + " bytes.");
    fos.write(buffer, 0, read);
    }

    fos.close();
    dis.close();
    }

    public static void main(String[] args) {
    FileServer fs = new FileServer(1988);
    fs.start();
    }

    }

    Kliens:

    package serverkliens;

    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.Socket;

    public class FileClient {

    private Socket s;

    public FileClient(String host, int port, String file) {
    try {
    s = new Socket(host, port);
    sendFile(file);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public void sendFile(String file) throws IOException {
    DataOutputStream dos = new DataOutputStream(s.getOutputStream());
    FileInputStream fis = new FileInputStream(file);
    byte[] buffer = new byte[12 * 4096];

    int read;
    while ((read = fis.read(buffer)) > 0) {
    dos.write(buffer, 0, read);
    }

    fis.close();
    dos.close();
    }

    public static void main(String[] args) {
    FileClient fc = new FileClient("localhost", 1988, "/Users/Valaki/Music/Zene/Aya Nakamura - Copines.mp3");
    }

    }

    Itt már jól működik a fájlátvitel mondjuk txt fájl esetén, viszont amint mp3-at adok meg neki akkor kb 15kb-ot átvisz és kapok egy ilyen üzenetet:
    java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)

    Ebben látsz valami hibát ? :) mi lehet a gondja? :R :R

Új hozzászólás Aktív témák