java-forum.org letzten News: Eclipse Ganymede seit Juni 2003
java-forum.org
Die Java-Community, in der einem garantiert geholfen wird.

 
SuchenSuchen  Java FAQFAQ  Java RSS-FeedRSS-Feeds 
java-forum.net BoardregelnBoardregeln   MitgliederlisteMitgliederliste  MitarbeiterMitarbeiter 
 RegistrierenRegistrieren   LoginLogin
Chat (exile.de.eu.phat-net.de/java-forum.net)
java tutorial und jsp forum
 
 
Java Buch
Java 5 - Kompendium 1100 Seiten
Alter Preis: 39,95 € - jetzt nur: 14,95 €
Und weitere bis zu 90% reduzierte IT-Bücher
Billige IT Bücher

Datagram-Sockets für UDP-Kommunikation buecherbillig.de - IT-Bücher bis zu 90% reduziert Neue Antwort erstellen
java-forum.org Foren-Übersicht -> Netzwerkprogrammierung
Druckversion downloaden (ganzer Thread)
Autor Nachricht
Gast
BeitragVerfasst am: 24. 01. 2008, 16:55    Titel: Datagram-Sockets für UDP-Kommunikation   Zitieren
Druckversion downloaden (dieser Post)

Hi Leute, ich habe da ein Problem.
Ich möchte gerne die eingehenden Daten über den Sockel 10001 über Java zugänglich machen. Ich habe eine Platine die Über RS232 ein Byte/Sekunde an meine COM2LAN-Platine sendet.


So sieht das Com2Lan-Modul aus:



Näheres zu Com2Lan auf folgenden Links:
Modul-A:
[url]http://www.hthiele.de/ctcomlan.html (die Platine)[/url]
http://www.heise.de/ct/04/13/200/
http://www.heise.de/ct/04/13/links/200.shtml
Lantronix: http://www.lantronix.com/device-networking/embedded-device-servers/xport.html
Demoapplet: http://www.heise.de/ct/ftp/04/13/200/
Die Com2Lan-Platine ist wiederum über RJ-45 mit meinem PC verbunden.
Folglich will ich über TCP/IP oder UDP/IP die Daten die meinen PC erreichen verarbeiten.
Wie kann man das realisieren?

Ich habe auch schon was dazu in "Java ist auch ein Insel" gefunden
http://www.galileocomputing.de/openbook/javainsel7/javainsel_17_011.htm#mj57d19e336c7e644103daf20fdca37312
habe damit leider noch nicht viel anfangen könnnen.

Ich möchte, dass das Byte was jede Sekunde reinkommt in eine Variable gespeichert wird, so dass ich den Inhalt weiter verarbeiten kann.

Das ganze läuft im Rahmen eines Projektes zur Wassertankfüllstandsmessung.

In dem Byte was reinkommt ist einfach nur eine Zahl zwischen 0-255 codiert, über welche man den Füllstand des Wassertanks errechnen kann.

Vielen Dank im Voraus für eure Hilfe.

rom4o
Nach oben
Gast
BeitragVerfasst am: 27. 01. 2008, 16:26    Titel:   Zitieren
Druckversion downloaden (dieser Post)

Kommen deine Infos über TCP oder UDP herein?
Auf welchem Port kommen sie herein?
Nach oben
Gast
BeitragVerfasst am: 29. 01. 2008, 12:56    Titel:   Zitieren
Druckversion downloaden (dieser Post)

Hi, die Frage ist beantwortet, ein Kumpel der es in Java voll drauf hat,
hats mir programmiert. Doch nicht über UDP, TCP ist sicherer.

 Code:
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class Connector {

   class DataReaderThread extends Thread {

      private Reader breader;
      private boolean interrupt;
      private boolean stopped;

      public DataReaderThread(Reader reader) {
         this.stopped = false;
         this.breader = reader;
         this.interrupt = false;
      }

      public synchronized boolean getStopped() {
         return stopped;
      }

      public void run() {
         try {
            stopped = false;
            while (!breader.ready() && !interrupt) {
               Thread.sleep(300);
            }

            while (!interrupt) {
               System.out.println(breader.read());
               Thread.sleep(50);
            }
            stopped = true;
         } catch (IOException e) {
            e.printStackTrace();
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }

      @Override
      public synchronized void interrupt() {
         interrupt = true;
      }
   }

   private Socket socket;
   private BufferedReader br;
   private boolean isConnected;
   private DataReaderThread drt;

   public Connector() {
      isConnected = false;
   }

   public void connect(String ip, int port) {
      try {
         InetAddress ia = InetAddress.getByName(ip);
         socket = new Socket(ia.getHostAddress(), port);

         br = new BufferedReader(new InputStreamReader(socket
               .getInputStream()));
         isConnected = true;
         System.out.println("Connected to " + ip + ":" + port);
         System.out.println("Waiting for data ...");
      } catch (UnknownHostException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   public void readContinously() {
      if (!isConnected) {
         System.out.println("Connect first!");
         return;
      }

      if (drt != null) {
         drt.interrupt();
      }

      drt = new DataReaderThread(br);
      drt.start();
   }

   public void disconnect() {
      if (!isConnected) {
         System.out.println("Not connected!");
         return;
      }

      drt.interrupt();
      try {
         while (!drt.stopped) {
            Thread.sleep(100);
         }
         socket.close();
      } catch (InterruptedException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args) {
      Connector c = new Connector();
      c.connect("192.168.178.50", 10001);
      c.readContinously();

      try {
         Reader reader = new InputStreamReader(System.in);
         while (true) {
            char input = (char) reader.read();
            if (input == 'q') {
               c.disconnect();
               System.out.println("disconnected!");
               break;
            }
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}


Das Programm läuft super.

Viele Grüsse...

rom4o
Nach oben
Seite 1 von 1

Druckversion downloaden (ganzer Thread)
java-forum.org Foren-Übersicht -> Netzwerkprogrammierung Neue Antwort erstellen

Quick Reply    quote

Benutzername:

Nachricht:

Quick Reply absenden

Impressum & Kontakt


Die Vervielfältigung der auf den Seiten www.java-forum.org enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.