L
lenn1
Aktives Mitglied
Thread Starter
- Dabei seit
- 11.10.2005
- Beiträge
- 193
- Reaktionspunkte
- 2
Ich schreibe ein Programm, dass mir den Callmonitor Stream der Fritzbox ausliest und dann im Terminal ausgeben soll:
Habe dabei folgendes Problem:
Beim 1. Anruf kommt nur das:
Beim 2. Anruf dann das:
Das Programm gibt mir also ab dem 2. Anruf immer nur aus, wer letztesmal angerufen hat. Das hilft mir herzlich wenig.
Da die ausgaben in einem Block stehen muss es doch funktionieren!
Ich verstehe hier gar nix mehr ..
(Unter Linux das gleiche Problem.)
PS: Die Fritzbox sendet mir das, wenn jemand anruft:
Code:
Anruf!
nr:01511234567
Habe dabei folgendes Problem:
Beim 1. Anruf kommt nur das:
Code:
Anruf!
Beim 2. Anruf dann das:
Code:
nr:01511234567Anruf!
Das Programm gibt mir also ab dem 2. Anruf immer nur aus, wer letztesmal angerufen hat. Das hilft mir herzlich wenig.
Da die ausgaben in einem Block stehen muss es doch funktionieren!
Ich verstehe hier gar nix mehr ..
(Unter Linux das gleiche Problem.)
Code:
#include <iostream.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netinet/in.h>
using namespace std;
string AnruferNummer(string anrufString)
{
string temp(anrufString);
temp = temp.substr(25);
ssize_t pos = temp.find(';');
temp = temp.substr(0,pos);
return temp;
}
int main ()
{
try
{
///////// Connecting.. /////////
sockaddr_in remote_addr;
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = htons(1012);
remote_addr.sin_addr.s_addr = inet_addr("192.168.178.1");
int sfd = socket(AF_INET, SOCK_STREAM, 0);
if(sfd == -1)
throw "socket";
int con = connect(sfd, (struct sockaddr*)&remote_addr, sizeof(remote_addr));
if(con == -1)
throw "connect";
/////////////////////////////////
char buffer[100];
ssize_t len = 100;
string anrufer;
while(true)
{
ssize_t rec = recv(sfd, buffer, len, sizeof(remote_addr));
if(rec == -1)
throw "receive";
if(strstr(buffer,"RING") != NULL)
{
cout << "Anruf!" << endl;
cout << endl << "nr: " << AnruferNummer(buffer);
}
}
}
catch (char*fehler)
{
cout << fehler << "-error\n";
}
return 0;
}
PS: Die Fritzbox sendet mir das, wenn jemand anruft:
Code:
23.05.11 10:23:30;RING;0;01511234567;0461XXX8109;SIP4;