Netzwerk Stream auf neue Daten prüfen
-
Hallo zusammen,
ich habe einen Server geschrieben, der einen Datensatz empfängt, diesen an ein anderes Programm weitergibt und über die Hardware eines Raspberry Pi verarbeitet. Es funktioniert auch wunderbar, allerdings nur einmal. Sobald ich den Server wieder aufrufe, soll dieser direkt über eine Schleife Daten auslesen( die Verbindung soll nur einmal zu Programmstart hergestellt werden). Beendet wird der Socket über einen Befehl aus dem Datensatz, den der Server vom Client erhält.
Nun meine Frage: Ist es möglich, den Stream auf "aktuelle Daten " zu prüfen? Oder hat jemand evtl eine andere Lösung zu dem Problem?
Ich bin leider noch nicht sooo erfahren in der Netzwerkprogrammierung.
Vielen Dank im voraus...Der Server ist wie folgt aufgebaut:
if(start == 0) //Start ist eine externe Variable, die zu Programmstart auf 0 gesetzt wird { serv_sock = socket(AF_INET, SOCK_STREAM, 0); if (serv_sock == -1) perror("socket()"); puts("Socket Abfrage erfolgreich\n"); serv.sin_family = AF_INET; serv.sin_addr.s_addr = htonl(INADDR_ANY); serv.sin_port = htons(10000); if(bind(serv_sock, (struct sockaddr*)&serv,sizeof(serv))<0) perror("bind()"); puts("Server gestartet"); if(listen(serv_sock, 5) == -1) perror("listen()"); puts("Warte auf eingehende Verbindung...\n"); clientsize = sizeof(struct sockaddr_in); cli_sock = accept(serv_sock, (struct sockaddr*)&client , (socklen_t*)&clientsize); if (cli_sock < 0) { perror("accept()"); } printf("Verbindung hergestellt zu:\nHost:%s\nPort:%d \n", inet_ntoa(client.sin_addr), ntohs(client.sin_port)); start = 1; } if(freigabe != 2)//freigabe wird vom Client gesendet { while(recvBuff[n] != '\r' ) { n=recv(cli_sock,recvBuff,20,0); recvBuff[n]='\r'; if(n == -1) puts("recv Fehler"); perror("recv()"); Zeit in Sekunden sleep(1); } printf("%s\n",recvBuff); printf("%d Zeichen empfangen\n",n); } if(freigabe == 2) { close(cli_sock); puts("Cli_sock geschlossen"); close(serv_sock); }
-
Du suchst nach select().
Schau mal bei http://www.zotteljedi.de/ vorbei. Da gibt es Tipps und ein Buch (als PDF) über sockets.