Client-server-client – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Client-server-client – Java – Fórum – Programujte.comClient-server-client – Java – Fórum – Programujte.com

 

MM
~ Anonymní uživatel
3 příspěvky
5. 6. 2013   #1
-
0
-

package client;

import java.awt.Graphics;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import javax.swing.JPanel;
import java.awt.*;
import java.io.EOFException;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;

public class Server {

   
    final int LEN = 10000000; //proměná která se zadává do polí jako největší číslo, můžeš pak měnit pouze toto číslo a mění se ti to všude ;-)
    int[] sample = new int[LEN]; //pole vzorků -> vydělením vzorkovací frekvencí vznikne čas
    float[] seconds = new float[LEN]; //pole sekund v ms -> nepoužívá se zde(server)
    short[] channel1 = new short[LEN]; //první kanál, prvních dat -> pomocí citlivosti vydělím kanál1 a vzniknou data kanálu 3
    short[] channel2 = new short[LEN]; // druhý kanál, prvních dat -> pomocí citlivosti vydělím kanál1 a vzniknou data kanálu 4
    //float[] channel3 = new float[LEN];
    //float[] channel4 = new float[LEN];
    byte dataType = 0x01;
    int lastSample = 0; //číslo posledního vzorku, určuje i počet vzorků
    int[] averages = new int[LEN];

    public Server() {
        try {
            DataInputStream input = null;
            DataOutputStream output = null;

            Socket client = new Socket("localhost", 1234);
            input = new DataInputStream(client.getInputStream());
            output = new DataOutputStream(client.getOutputStream());
            output.writeByte(dataType);

            int counter = 0;

            switch (dataType) {
                case 0x01:

                    counter = 0;
                    while (counter < sample.length) {//načtení dat ze serveru
                        sample[counter] = Integer.reverseBytes(input.readInt());//číslo vzorku

                        channel1[counter] = Short.reverseBytes(input.readShort());
                        channel2[counter] = Short.reverseBytes(input.readShort());
                        lastSample = counter;//uložení čísla posledního vzorku, poslední cyklus

                        // System.out.println(sample[counter] + " " + channel1[counter] + " " + channel2[counter]);
                        counter++;
                    }
                    break;
            }
        } catch (EOFException ex) {//HODNĚ DŮLEŽITÉ, po skončení načítání vystokočí tato hláška a uzavře se spojení se serverem
        } catch (UnknownHostException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println(lastSample);
    }

    public static void main(String[] args) {
        try {
            // TODO code application logic here
            //Client client = new Client();

            ServerSocket socket = new ServerSocket(1234);//spuštění serveru
            Server_listener s = new Server_listener(socket);
            s.run();


        } catch (IOException ex) {
            Logger.getLogger(Server.class
                    .getName()).log(Level.SEVERE, null, ex);
        }


    }

    private static class Server_listener implements Runnable {

        Server client = new Server();//spuštění třídy Server, načtení atd...
        DataInputStream input = null;
        DataOutputStream output = null;
   
        ServerSocket server;

        public Server_listener(ServerSocket server) {
            this.server = server;

            //this.channel

        }

        @Override
        public void run() {
            while (true) {//cyklus serveru, musí být na začátku a true, aby mohl obsluhovat více klientů
                try {
                    Socket socket;
                    byte command = 0;
                    int counter = 0;


                    socket = server.accept();
                    System.err.println("Socket accepted");
                    DataInputStream input = new DataInputStream(socket.getInputStream());
                    DataOutputStream output = new DataOutputStream(socket.getOutputStream());
                    command = input.readByte();


                    switch (command) {
                        case 0x01:
                            counter = 0;
                            while (counter < client.LEN) {//posílá data klienta dalšímu klientovi 0x01

                                output.writeInt(Integer.reverseBytes(client.sample[counter]));
                                output.writeShort(Short.reverseBytes(client.channel1[counter]));
                                output.writeShort(Short.reverseBytes(client.channel2[counter]));
                                counter++;

                            }
                            break;
                        case 0x02:
                            counter = 0;
                            while (counter < client.LEN) {

                                output.writeInt(Integer.reverseBytes(Float.floatToIntBits((float) client.sample[counter] / 250.0F)));//převedení vzorků na milisekundy, vydělením vzorku vzorkovací frekvencí
                                output.writeInt(Integer.reverseBytes(Float.floatToIntBits((float) client.channel1[counter] / 400.0F)));//převedení prvního kanálu na mV, vydělením citlivostí- citlivost = channel1/channel3
                                //output.writeInt(Integer.reverseBytes(Float.floatToIntBits((float) client.channel2[counter] / 400.0F)));//převedení prvního kanálu na mV, vydělením citlivostí- citlivost = channel1/channel3
                                output.writeFloat((float) client.channel2[counter] / 400.0F);
                                counter++;
                            }
                            break;
                    }
                    socket.close();//uzavření spojení
                    System.err.println("Socket closed");

                } catch (java.net.SocketException e) {//důležité
                } catch (IOException ex) {
                    Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}

Nahlásit jako SPAM
IP: 88.102.97.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 42 hostů

Podobná vlákna

[C#] Server client — založil gledy

Client/Server — založil silent

Server + Client — založil Mudraon

Client server c# — založil Misiak

Server a Client zaroven — založil SMArek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý