stream UDP

Odpowiedz Nowy wątek
2015-10-17 00:43
0

Witam, mam napisać program sieciowy, który będzie stremował obraz video poprzez pakiety UDP. Pomysłodwaca nie dał mi jednak żadnych wskazówek, zero koncepcji. Dajac to ze raczkuje w javie to robi sie malo fajny pasztet. Dlatego tez mam do was kilka wstepnych pytan. Od czego zaczac? Jak by miala wygladac koncepcja na taki program?

Ja mysle tak: Mamy klienta A ktory porozumiewa sie z jakims B (czyli klient klient) bez opcji serwer.
Mamy templatke i teraz co? Stream z linka w necie? stream z dysku?(chyba najrosadniejsze)?
Czyli nasza templatka jakis textbox(tu bedzie jakas dana o video) i buton wysylajacy do drugiego. + okienko otwarzania. Drugi klient to samo. Tylko jednoczesnie jeden moze stremowac video.

Tylko teraz czy moja koncepcja jest sluszna?
O co chodzi z tym UDP?
Czy jest jakis sprytny poradnik na necie dotyczacy tego polecenia? lub przynajnmniej madry tutorial zwiazany z programowaniem sieciowym ktory byscie polecili zeby rozwiazac to zagadnienie?

Pozostało 580 znaków

2015-10-17 09:40
0

Hej, wujek google: "java udp"
i dwa wyniki:

http://tutorials.jenkov.com/j[...]ing/udp-datagram-sockets.html

https://systembash.com/a-simple-java-udp-server-and-udp-client/


Pozostało 580 znaków

2015-10-18 23:57
Krzywy Krawiec
0

W internecie wyszukalem jakies programy na podstawie mam to co ponizej( to co podales tez znalazlem) nie w tym problem. Chyba mam program o kotry mi chodzi do modyfikacji drobnej ale.. zainstalowalem eclipse zrobilem nowy projekt dwie klasy jak ponizej klikam play i nic sie nie dzieje? o co chodzi? oswieci mnie ktos z dzialaniem tego kodu?

UDPserwer:

package projekt;

import java.io.*;
import java.net.*;

@SuppressWarnings("unused")
class UDPServer
{
   public static void main(String args[]) throws Exception
      {
         DatagramSocket serverSocket = new DatagramSocket(9876);
            byte[] receiveData = new byte[1024];
            byte[] sendData = new byte[1024];
            while(true)
               {
                  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                  serverSocket.receive(receivePacket);
                  String sentence = new String( receivePacket.getData());
                  System.out.println("RECEIVED: " + sentence);
                  InetAddress IPAddress = receivePacket.getAddress();
                  int port = receivePacket.getPort();
                  String capitalizedSentence = sentence.toUpperCase();
                  sendData = capitalizedSentence.getBytes();
                  DatagramPacket sendPacket =
                  new DatagramPacket(sendData, sendData.length, IPAddress, port);
                  serverSocket.send(sendPacket);
               }
      }
} 

UDPklient:

package projekt;

import java.io.*;
import java.net.*;

class UDPklient
{
   public static void main(String args[]) throws Exception
   {
      BufferedReader inFromUser =
         new BufferedReader(new InputStreamReader(System.in));
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("localhost");
      byte[] sendData = new byte[1024];
      byte[] receiveData = new byte[1024];
      String sentence = inFromUser.readLine();
      sendData = sentence.getBytes();
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
      clientSocket.send(sendPacket);
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
      clientSocket.receive(receivePacket);
      String modifiedSentence = new String(receivePacket.getData());
      System.out.println("FROM SERVER:" + modifiedSentence);
      clientSocket.close();
   }
} 
edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

2015-10-19 00:15
0

Zacznij może od nauki podstaw javy? Uruchom łaskawie OBA programy (bo to są dwa programy...) i zobacz co się będzie działo...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-10-19 09:12
0

Dostajesz jakiś błąd?
Zgadzam się z przedmówcą to są dwa rożne programy


Jaki ma dostać błąd? Jak odpalił tylko klienta albo tylko serwer to zapewne "nic sie nie dzieje" ;] - Shalom 2015-10-19 09:18
Zboczenie zawodowe ;) - Black007 2015-10-19 09:20

Pozostało 580 znaków

2015-10-19 13:04
Biały Terrorysta
0

http://www.binarytides.com/udp-socket-programming-in-java/

Wydaje mi sie ze to jest blizsze mojemu poleceniu, robilem glupi blad ze nie podzielilem osobno na klient serwer.
Tylko teraz jak to przerobic na stream video w javie?
Jakie sa funkcje do tego sluzace?

Jesli mi sie wydaje dobrze to w linku kotry podalem obecnie pakiet jest wysylany na localhost i wraca(taka ramka UDP) cos w tym stylu. Czyli ja powinienem zmienic zeby szlo video i wrocilo? Tylko czy moze isc na lh wlasnie? Czy przejdzie to jesli nie bedzie to aplikacja web? i jak to wykonac?(jakis tut)?

Pozostało 580 znaków

2015-10-19 13:52
Biały Terrorysta
0

znalazlem takie cos

URL url = new URL("https://www.google.com/robots.txt");             
                InputStream stream = url.openStream();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(stream));
                String line = reader.readLine();
                while (line !=null)
                {
                    System.out.println(line);
                    line = reader.readLine();
                }
                System.out.println("Done");

ale jest to tylko dla plikow txt , przy mp4/avi juz nie chce dzialac jak to przerobic?

edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

2015-10-19 15:11
0

Bez zewnętrznej biblioteki raczej tego nie zrobisz.
Znowu wujek google....


Pozostało 580 znaków

2015-10-19 20:27
Biały Terrorysta
0

o czym powinienem czytać?

Pozostało 580 znaków

2015-10-20 20:48
Biały Terrorysta
0

SERWER:

package test1;

import java.io.*;
import java.io.FileOutputStream;
import java.net.*;

public class udp_server
{
public static void main(String args[])
{
    DatagramSocket sock = null;

    try
    {
        //1. creating a server socket, parameter is local port number
        sock = new DatagramSocket(7777);

        //buffer to receive incoming data
        byte[] buffer = new byte[65536];
        DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);

        //2. Wait for an incoming data
        echo("Server socket created. Waiting for incoming data...");

        //communication loop
        while(true)
        {
            sock.receive(incoming);
            byte[] data = incoming.getData();
            String s = new String(data, 0, incoming.getLength());

            //echo the details of incoming data - client ip : client port - client message
            echo(incoming.getAddress().getHostAddress() + " : " + incoming.getPort() + " - " + s);

            s = "OK : " + s;

            DatagramPacket dp = new DatagramPacket(s.getBytes() , s.getBytes().length , incoming.getAddress() , incoming.getPort());
            sock.send(dp);

            File file = new File("C:/INNE/test.mp4");
            FileOutputStream fos = new FileOutputStream(file);  
            DatagramPacket rpacket = new DatagramPacket(buffer, buffer.length);

               while (true) {
                   sock.receive(rpacket);
                   fos.write(rpacket.getData(), 0, rpacket.getLength());
               }
        }
    }

    catch(IOException e)
    {
        System.err.println("IOException " + e);
    }
}

//simple function to echo data to terminal
public static void echo(String msg)
{
    System.out.println(msg);
}
}

KLIENT:

package test2;

import java.io.*;

import java.net.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 

public class udp_client
{
    public static void main(String args[])
    {
        DatagramSocket sock = null;
        int port = 7777;
        String s;

        BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));

        try
        {
            sock = new DatagramSocket();

            InetAddress host = InetAddress.getByName("localhost");

            while(true)
            {
                //take input and send the packet
                echo("Enter message to send : ");
                s = (String)cin.readLine();
                byte[] b = s.getBytes();

                DatagramPacket  dp = new DatagramPacket(b , b.length , host , port);
                sock.send(dp);

                //now receive reply
                //buffer to receive incoming data
                byte[] buffer = new byte[65536];
                DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
                sock.receive(reply);

                byte[] data = reply.getData();
                s = new String(data, 0, reply.getLength());

                //echo the details of incoming data - client ip : client port - client message

//                URL url = new URL("https://www.google.com/robots.txt");             
//                InputStream stream = url.openStream();
//                BufferedReader reader = new BufferedReader(
//                      new InputStreamReader(stream));
//                String line = reader.readLine();
//                while (line !=null)
//                {
//                  System.out.println(line);
//                  line = reader.readLine();
//                }
//                System.out.println("Done");

                echo(reply.getAddress().getHostAddress() + " : " + reply.getPort() + " - " + s);
                echo("dupa");

                File file = new File("C:/INNE/test.mp4");
                FileInputStream fis = new FileInputStream(file);
                DatagramPacket pack;

                int size = 0;

                while (true) {
                    size = fis.read(buffer);                
                    pack = new DatagramPacket(buffer, buffer.length);
                    sock.send(pack);
                }

            }
        }

        catch(IOException e)
        {
            System.err.println("IOException " + e);
        }
    }

    //simple function to echo data to terminal
    public static void echo(String msg)
    {
        System.out.println(msg);
    }
}

Prosił bym o wskazanie co jest nie tak w moim kodzie. Powtarzam w programie chodzi o stream video z uzyciem UDP.
Wydaje mi sie ze bleblujac internet cos chociaz podobnego tworze, lecz na ta chwile jest taki blad:

w kliencie:

Exception in thread "main" java.lang.NullPointerException: null address || null buffer
    at java.net.DualStackPlainDatagramSocketImpl.send(Unknown Source)
    at java.net.DatagramSocket.send(Unknown Source)
    at test2.udp_client.main(udp_client.java:79)

zas po wlaczeniu serwera jest:
"Server socket created. Waiting for incoming data..."
wiec chyba dziala..

Jeszcze raz prosze o wskazowki, poprawe i dziekuje za wszelka pomoc.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0