tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
984
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    Hallo,

    ich habe mal ein bischen mit sockets rum gespielt aber viel Erfahrung hab ich da jetzt nicht, meine frage, die ich dringend beantwortet haben müsste wäre, wie ich mit Java per TCP IP ein komando an einen Klienten schicken kann dessen IP ich weis.

    Ich soll einen Lableprinter zum Laufen bekommen und dazu muss ich mit ihm über TCP IP kommunizieren.

    Was brauch ich dazu für ein Socket?

    Bitte helft mir, ich stehe etwas unter Zeitdruck

    Sönke
     

  2. #2
    00d4vid 00d4vid ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Ort
    München
    Beiträge
    51
    Ja kannst du, mit einem normalen Socket.

    Hier solltest du eigentlich alle nötigen Infos finden:
    http://java.sun.com/javase/6/docs/ap...et/Socket.html
     
    Hallo Nuray!

  3. #3
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    danke für die Antwort, welchen port nehmen denn so drucker meistens?
     

  4. #4
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    habe ein weiteres Problem und zwar schmeißt er mir immer socketerror.

    hier mein code:

    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
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    /**
     * This Class has to test the communication with the termal Ethernet Printer 
     * "Orient BTP-L580" and prints an test label.
     *   
     * @author Soenke Paschko
     * @version 1.0
     */
     
    public class Main {
     
        
     
        /**
         * This is the main method
         * @param args
         */
        public static void main(String[] args) {
        
        try {
            Socket socket = new Socket("172.16.8.27", 4000);
            
            System.out.println("Socket is initialized");
            
            // Preparing new message
            schreibeNachricht(socket,"LF");  
            System.out.println("Linefeed");
            
            //String empfangeneNachricht = leseNachricht(socket);
            //System.out.println("Response: " + empfangeneNachricht);
            
            
        } catch (UnknownHostException e) {
            System.out.println("Socketerror unknown host");
        } catch (IOException e) {
            System.out.println("Socketerror IOExeption");
        }
            
            
     
        }
        
        public static void schreibeNachricht(java.net.Socket socket, String nachricht) throws IOException {
             PrintWriter printWriter =
                new PrintWriter(
                new OutputStreamWriter(
                    socket.getOutputStream()));
            printWriter.print(nachricht);
            printWriter.flush();
            }
        
        public static String leseNachricht(java.net.Socket socket) throws IOException {
            BufferedReader bufferedReader =
                new BufferedReader(
                new InputStreamReader(
                    socket.getInputStream()));
            char[] buffer = new char[200];
            int anzahlZeichen = bufferedReader.read(buffer, 0, 200); // blockiert bis Nachricht empfangen
            String nachricht = new String(buffer, 0, anzahlZeichen);
            return nachricht;
         }
     
     
    }


    Der fehler ist IO Exeption
     

  5. #5
    Avatar von port29
    port29 port29 ist offline deus.Server
    Registriert seit
    Dec 2001
    Ort
    Karlsruhe, Germany, Germany
    Beiträge
    856
    Also entweder verstehe ich nicht so ganz, was du machen möchtest oder du stellst dir alles zu einfach vor.

    Einem Drucker kannst du heute nicht mehr einfach sagen "Druck mir mal das Zeichen X aus". Es ging früher mit den Nadeldruckern ganz gut, heute ist es nicht mehr so einfach. Denn heute gibt es Treiber, die mit dem Drucker kommunizieren. Um so etwas nachzubilden, braucht man schon etwas mehr Geschick (und vor allem ZEIT!). Wenn du Glück hast, spricht der Drucker Postscript.

    Wenn du es tatsächlich versuchen möchtest, gibt es zwei Möglichkeiten:

    1) Du besorgst dir die Doku zu dem Drucker, darin stehen alle möglichen Befehle drin. Da wird es sehr schwer ran zu kommen sein.

    2) Du holst dir den normalen Treiber des Druckers, druckst etwas aus und schneidest den Netzwerktraffic in dem Moment mit. Daraus kannst du dann Reverse Engineeren.

    Auf welchen Port du commecten musst, kannst du herausfinden, indem du einfach nmap über die IP des Druckers jagst.
     

  6. #6
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    Jein, ich habe einen labledrucker mitsammt der dokus und den befehlen. nun möchte ich diese befehle senden. leider wird meine verbindung immer zurückgewiesen. laut doku sollte der port 9100 zur kommunikation mit dem printer genutzt werden.

    ansonsten ist das so OK`? wenn ich einfach nur Befehle an den Drucker senden will?

    Die Befehle sind im übrigen schon in ascii codiert. d.h. die Asciiwerte von LF bilden wen befehl.
     

  7. #7
    Avatar von port29
    port29 port29 ist offline deus.Server
    Registriert seit
    Dec 2001
    Ort
    Karlsruhe, Germany, Germany
    Beiträge
    856
    Fangen wir dann mal langsam an unser Problem zu analysieren.
    Bist du sicher, dass du die richtige IP des Druckers hast? Lässt sich das Ding anpingen?
    Bist du dir sicher, dass der Port richtig ist?
    Brauchst du eine TCP oder UDP Verbindung?

    Wenn es TCP ist, kannst du ganz einfach prüfen, ob alles richtig ist, indem du einfach das Programm "telnet" dafür benutzt.
     

  8. #8
    soeni1987 soeni1987 ist offline Mitglied Silber
    Registriert seit
    Mar 2006
    Beiträge
    79
    so hab jetzt die Beispielsoftware installiert und die geht auch nicht. pingen kann ich das gerät, laut doku ist der port 9100 dafür zuständig. habs auch schon mit Terraterm und telnet versucht, die verbindung wird aber immer zurückgewiesen.
    Ich werde mich nochmal mit dem Verkäufer kurzschließen.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 23.10.10, 19:57
  2. Antworten: 3
    Letzter Beitrag: 11.11.09, 12:49
  3. Datei mit angabe des dateipfads an eigene ip adresse senden
    Von callofduty im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 28.12.08, 15:33
  4. Antworten: 2
    Letzter Beitrag: 02.05.08, 08:46
  5. Antworten: 1
    Letzter Beitrag: 18.12.04, 16:30