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.
Hallo Dr Sommer, soll ich dann IPPROTO_UDP durch IPPROTO_TCP ersetzen?
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
Ja das geht ebenfalls über das Socket-API, mit socket(),bind(),listen(),accept(),recv(). Ermitteln der Zeit mit time().
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.