Hejsa
Jeg tror der er noget galt i din client..
(Jeg kommenterer lige hvad jeg tror der går galt)
> byte data[] = new byte[4096];
Du laver et array på 4096 bytes, som alle er 0 (zero).
> int bytesFromServer = 0;
>
> ByteArrayInputStream inputFromServer = new
ByteArrayInputStream(data);
Du laver en ByteArrayInputStream som består af 4096 bytes som alle er 0.
> packet = new DatagramPacket(data,data.length);
>
> while((bytesFromServer = inputFromServer.read(data)) != -1)
Du læser 4096 bytes fra din ByteArrayInputStream og putter dem i Data.
(bytesFromServer er altså 4096)
> {
> socket.receive(packet);
Du modtager Packet.
> data = packet.getData();
Du sætter data lig med packet data.
> inputFromServer.read(data, packet.getOffset(),
packet.getLength());
Du læser fra din ByteArrayInputStream som ikke længere indeholder nogen
data (dem har du allerede læst).
>
> System.out.println("received length:
"+packet.getLength());
> }
Jeg tror din kode skal se sådan ud :
> byte data[] = new byte[4096];
> int bytesFromServer = 0;
>
> packet = new DatagramPacket(data,data.length);
>
> ByteArrayOutputStream inputFromServer = new
ByteArrayOutputStream(); //Bemærk at det er en OutputStream
> while(true) //Du skal på en eller anden måde, finde ud af
hvornår den sidste pakke er modtaget.. (Det skal du jo styre når du
bruger UDP)
> {
> socket.receive(packet);
> data = packet.getData();
> inputFromServer.write(data, packet.getOffset(),
packet.getLength());
>
> System.out.println("received length:
"+packet.getLength());
> }
JokeSten wrote:
> Hejsa
> Jeg prøver at sende et billede (via multicast). Jeg vil åbne en
> Fileinputstream fra serveren og på clienten il jeg gemme det i det i et
> ByteInputArray.
> Det virker som om at jeg sender pakker somer er større end den mængde data
> som jeg har lyst til at sende. Endvidere vil min Client kun modtage den
> første pakke.
> JEg har tilføjet et par println til at illustrer mit problem.
>
>
> Når jeg kører min Client for jeg kun følgende output :
>
> [mb@mb Client]$ java Client
> received length: 4096
>
> men når jeg kører min Server får jeg følgende output :
> [mb@mb Server]$ java Server
> Nr. 1 Length of of bytes read 4096
> Nr. 1 Packet Length 4096
> Nr. 2 Length of of bytes read 4096
> Nr. 2 Packet Length 4096
> Nr. 3 Length of of bytes read 4096
> Nr. 3 Packet Length 4096
> Nr. 4 Length of of bytes read 2436
> Nr. 4 Packet Length 4096
>
> Koden er til Clienten er her :
>
> MulticastSocket socket;
> DatagramPacket packet;
> String group = "225.4.5.6";
>
> socket = new MulticastSocket(MPORT);
> socket.joinGroup(InetAddress.getByName(group));
>
> byte data[] = new byte[4096];
> int bytesFromServer = 0;
>
> ByteArrayInputStream inputFromServer = new ByteArrayInputStream(data);
> packet = new DatagramPacket(data,data.length);
>
> while((bytesFromServer = inputFromServer.read(data)) != -1)
> {
> socket.receive(packet);
> data = packet.getData();
> inputFromServer.read(data, packet.getOffset(), packet.getLength());
>
> System.out.println("received length: "+packet.getLength());
> }
>
--
Venlig hilsen
Frederik Hansen
Sun Certified Programmer
for the Java(tm) 2 Platform
email : frederik@roirex.dk
www :
www.roirex.dk