Hallo zusammen,
ich hoffe, dass ich im richtigen Forum bin.
Ich beschäftige mich seit Tagen mit Bluetooth.
Aus einem C-Quellecode moechte ich die Leseergbisse über Bluetooth
TCP/IP senden.
Die beiden Rechner sind über PAN verbunden.
Unter diesem Link:http://www.c-plusplus.de/forum/125683-full
habe ich ein Beispiel gefunden, wie man per C++ Bluetooth ansteuern
kann.
Ich habe dieses Teil in meinem Quellecode angepasst. Ich glaube es
funktionniert nicht richtig, weil egal die IP-Adresse, die ich
RecvAddr.sin_addr.s_addr = inet_addr("192.168.18.20") eintrage, bekomme
ich immer die Meldung dass, das Telegramm gesendet wurde.
Ausserdem, weiß ich nicht wie ich auf dem Zielsytem überprüfen, ob die
Daten wirklich angekommen sind.
Ich danke euch.
Laura
Der Code legt ein UDP Socket an, nicht TCP. Schlage vor, du arbeitest
dich erstmal in die Grundlagen des Socket-API ein anstatt irgendwelchen
Code zusammen zu kopieren. Als Anfang kannst du auf Empfängerseite mit
wireshark überprüfen ob was ankommt.
PS: Wenn du über IP bzw. TCP, UDP, ICMP etc. sendest, ist es völlig
unerheblich ob darunter Bluetooth, WLAN, Ethernet, DSL, oder was auch
immer liegt (siehe OSI Modell). Daher musst du bloß danach suchen wie
man TCP/IP mit dem winsocket API verwendet und die richtige IP Adresse
verwenden. Die Behandlung des Bluetooth spezifischen Zeugs macht dann
Windows.
Laura schrieb:> soll ich dann IPPROTO_UDP durch IPPROTO_TCP ersetzen?
Du sollst eine umfangreiche Einführung in das socket-API lesen (gibts
jede Menge von Netz), da warten noch diverse Tücken auf dich. Einfach
nur Code klauen bringt nichts.
Hallo,
ich habe nachgelesen und jetzt das socket in meinem Quellecode eingefügt
es funktioniert einwandfrei.
Das war wirklich blöd einen Quellcode zu kopieren ohne zu wissen, wie es
wirklich funktioniert.
Ich habe Wireshark Version 1.8.5 auf dem Zielrechner installiert.
Wenn ich auf “ Start“ drücke und ein Telegramm sende, unterm “76[TCP
segment of a reassembled PDU]“ sind die Daten in Hexadezimal
dargestellt.
Jetzt möchte ich die gesendeten Daten in einem File auf dem Zielrechner
speichern, z.B. ein Dumpfile und die Zeit wann die Daten gekommen sind
anzeigen(Datum;Zeit;RX;<STX>87 50 10 35 89 00 18<ETX>). Vielleicht mit
Hilfe einem Skript. Wichtig für mich, ist die Übertragungszeit zu
fassen.
Ich danke euch
Hallo Dr. Sommer,
sorry, ich verstehe nicht wozu ich diese Funktionen benutzen soll. Ich
möchte doch die Daten auf der Empfängerseite auslesen ohne irgendwelches
C-Programm zu kompilieren. Welches Programm soll ich auf der Gegenstelle
starten? Damit ich die empfangenen Daten mit Zeitangabe auslese.
Danke
Ich wüsste jetzt kein Programm was das kann. Ohne Zeitangabe direkt
TCP-Stream nach Datei ginge mit dem "nc" (netcat) Tool das auf (quasi)
allen Linux-Systemen installiert ist (gibts auch irgendwo ne Windows
Version von).
Ansonsten musst du wohl ein eigenes Programm schreiben, zB in ruby oder
python, damit gehts wohl einfacher & schneller als in C.
Dr. Sommer schrieb:> Ich wüsste jetzt kein Programm was das kann. Ohne Zeitangabe direkt> TCP-Stream nach Datei ginge mit dem "nc" (netcat) Tool das auf (quasi)> allen Linux-Systemen installiert ist (gibts auch irgendwo ne Windows> Version von).
netcat oder "sock" passt schon, dazu dann ein bischen Bash-Magie..
sock -l 192.168.x.y:12345 -... | while read line ; do date ; echo line ;
done | tee -a logile...
Du hast vorher gesagt, dass das Socket-Api ermitelln die Zeit mit
time(); Wie es funktionniert, wo denn werde ich ich diese Zeit auslesen?
durch Wireshark?
Ich bin Neuling und brauche mehr Infos um weiter zu arbeiten.
Laura schrieb:> Du hast vorher gesagt, dass das Socket-Api ermitelln die Zeit mit> time(); Wie es funktionniert, wo denn werde ich ich diese Zeit auslesen?> durch Wireshark?
WAT?!?! Die C-Funktion time() hat mit dem Socket-API und Wireshark
nichts zu tun, sondern ermittelt einfach nur die aktuelle Uhrzeit. So
kannst du beim Empfang einer Nachricht mit recv() dann mit time() die
aktuelle Uhrzeit abfragen und ausgeben.