Forum: Compiler & IDEs String über Bluetooth via TCP/IP


von Laura (Gast)


Angehängte Dateien:

Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

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.

von Laura (Gast)


Lesenswert?

Hallo Dr Sommer,

soll ich dann IPPROTO_UDP durch IPPROTO_TCP ersetzen?

von Dr. Sommer (Gast)


Lesenswert?

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.

von Dr. Sommer (Gast)


Lesenswert?

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.

von Laura (Gast)


Lesenswert?

Ok Danke, werde ich gleich nachlesen

von Laura (Gast)


Angehängte Dateien:

Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

Ja das geht ebenfalls über das Socket-API, mit 
socket(),bind(),listen(),accept(),recv(). Ermitteln der Zeit mit time().

von Laura (Gast)


Lesenswert?

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

von Dr. Sommer (Gast)


Lesenswert?

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.

von Εrnst B. (ernst)


Lesenswert?

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...

von Laura (Gast)


Lesenswert?

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.

von Dr. Sommer (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.