🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #556

Re: client/server file transfer in java

#556
From: An Ony
Date: Mon, 22 Jan 2007 22:20
103 lines
4448 bytes
Je moet je helemaal niets aantrekken van die filesize?
Schrijven doe je in blokken van 2^n byte-arrays tot er niets meer komt.
Een write geeft normaal gezien ook nog eens het aantal effectief geschreven bytes terug. Hetzelfde met een receive: zo weet je 
meteen hoe groot je array moet zijn, als je variabele lengtes zou gebruiken voor je array.

btw: kijk eens naar java.net.DatagramPacket en DatagramSocket


"Pieter Vandewoestyne" <pieter.vandewoestyne@howest.be> wrote in message news:r3rsh.300661$W33.6038622@phobos.telenet-ops.be...
> Hoi,
> Ik probeer een client/server applicatie te schrijven die een bestand van de client uploadt naar de server.
> Het probleem hierbij is dat ik in de code van mijn server zelf de bestandsgrootte hard gecodeerd moet meegeven.
> Hoe zou ik er voor kunnen zorgen dat de server zelf weet wat de bestandsgrootte zal zijn van het bestand dat binnenkomt?
> Mijn code ziet er als volgt uit:
>
> SERVER
> ----------
>
> class fserver {
>
>    public static void main(String [] args ) throws IOException {
>        int filesize=10722; // filesize temporary hardcoded
>
>        // create socket
>        ServerSocket servsock = new ServerSocket(1111);
>        System.out.println("Waiting for connection...");
>        Socket sock = servsock.accept();
>        System.out.println("Accepted connection");
>
>        byte [] mybytearray  = new byte [filesize];
>
>        BufferedInputStream bis = new BufferedInputStream(sock.getInputStream(),filesize);
>        //  bis.read(mybytearray,0,mybytearray.length);
>
>        int bytesRead = 0;
>        while ( bytesRead < filesize ) {
>            int off = bytesRead;
>            int len = filesize - bytesRead;
>
>            int readCount = bis.read( mybytearray, off, len );
>
>            if ( readCount == -1 ) {  // chech for EOF
>                System.err.println( "unexpected EOF" );
>                System.exit( 1 );
>            }
>
>            bytesRead += readCount;
>        }
>
>        FileOutputStream fos = new FileOutputStream("C:\\briefcopy.doc");
>        BufferedOutputStream bos = new BufferedOutputStream(fos);
>        fos.write(mybytearray,0,mybytearray.length);
>
>        // cleanup after file transfer
>        sock.close();
>        servsock.close();
>    }
>
> }
>
>
> CLIENT
> -----------
>
> class fclient {
>
>        public static void main (String [] args ) throws IOException {
>
>                // create socket
>                Socket sock = new Socket("127.0.0.1",1111);
>                System.out.println("Connecting...");
>
>                // get the file handle to send
>
>                File myFile = new File( "C:\\brief.doc" );
>                byte [] mybytearray  = new byte [(int)myFile.length()];
>                FileInputStream fis = new FileInputStream(myFile);
>                BufferedInputStream bis = new BufferedInputStream(fis);
>                bis.read(mybytearray,0,mybytearray.length);
>                OutputStream os;
>                DataOutputStream dos;
>                os=sock.getOutputStream();
>                dos=new DataOutputStream(os);
>                System.out.println("Sending...");
>                dos.write(mybytearray,0,mybytearray.length);
>
>                // cleanup
>
>                sock.close();
>
>        }
>
> }
>
>
> -------------------------------------------------------------------
>
> Alvast bedankt,
> Pieter
>
>
>
> 
Technical Details
Message-ID: <45b53895$0$5518$ba620e4c@news.skynet.be>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news1.google.com!newsfeed.media.kyoto-u.ac.jp!news.skynet.be!skynet.be!newspost001!tjb!not-for-mail
References: <r3rsh.300661$W33.6038622@phobos.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,4e7fc654d96d4a4a
X-Google-Attributes: gidfcea4,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!news1.google.com!newsfeed.media.kyoto-u.ac.jp!news.skynet.be!skynet.be!newspost001!tjb!not-for-mail
From: "An Ony" <nowhere@somewhere.net>
Newsgroups: be.comp.programming
References: <r3rsh.300661$W33.6038622@phobos.telenet-ops.be>
Subject: Re: client/server file transfer in java
Date: Mon, 22 Jan 2007 23:20:03 +0100
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
X-RFC2646: Format=Flowed; Response
Lines: 105
Message-ID: <45b53895$0$5518$ba620e4c@news.skynet.be>
Organization: -= Belgacom Usenet Service =-
NNTP-Posting-Host: 3b68fcc8.news.skynet.be
X-Trace: 1169504405 news.skynet.be 5518 81.246.182.190:2292
X-Complaints-To: usenet-abuse@skynet.be