Hallo VDR-Gemeinde!
Ich progge grad ein Plugin für VDR. Dabei habe ich bereits eine Grundstruktur mit dem überarbeiteten newplugin erstellt und einige Dinge nach lesen einiger Lektüren selber hinbekommen. An einer sache hapert es:
Das Plugin soll IP-Telegramme (TCP oder UDP steht noch nicht fest) an eine IP-Adresse und Port senden (später: Empfangen können), welche ich über das Plugin-Setup definieren kann.
Ich habe das mit der Porteingabe gelöst bekommen, an der IP scheitere ich.
Habe mir dazu aus einem anderen Plugin, welches ebenfalls eine IP-Einstellung mitbringt, Codeschnipsel verwendet. Allerdings funktioniert es nicht richtig.
Ich kann zwar ip-Adresse einstellen, aber nach der jeweils dritten Stelle schreibt er einfach weiter ohne Dezimal-Punkte einzufügen.
Was ich erreichen möchte: Ich möchte über das Setup die IP-Adresse ändern können. Das abspeichern in setup.conf funktioniert bereits.
Die IP-Adresse möchte ich später als Ziel- und absender-Adresse hernehmen, z.B. hierfür:
/* server.c */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define BUF 1024
int main (void) {
int create_socket, new_socket;
socklen_t addrlen;
char *buffer = malloc (BUF);
ssize_t size;
struct sockaddr_in address;
const int y = 1;
printf ("\e[2J");
if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) > 0)
printf ("Socket wurde angelegt\n");
setsockopt( create_socket, SOL_SOCKET,
SO_REUSEADDR, &y, sizeof(int));
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons (15000);
if (bind ( create_socket,
(struct sockaddr *) &address,
sizeof (address)) != 0) {
printf( "Der Port ist nicht frei - belegt!\n");
}
listen (create_socket, 5);
addrlen = sizeof (struct sockaddr_in);
while (1) {
new_socket = accept ( create_socket,
(struct sockaddr *) &address,
&addrlen );
if (new_socket > 0)
printf ("Ein Client (%s) ist verbunden ...\n",
inet_ntoa (address.sin_addr));
do {
printf ("Nachricht zum Versenden: ");
fgets (buffer, BUF, stdin);
send (new_socket, buffer, strlen (buffer), 0);
size = recv (new_socket, buffer, BUF-1, 0);
if( size > 0)
buffer[size] = '\0';
printf ("Nachricht empfangen: %s\n", buffer);
} while (strcmp (buffer, "quit\n") != 0);
close (new_socket);
}
close (create_socket);
return EXIT_SUCCESS;
}
Alles anzeigen
Bitte um Hilfe für einen C++ - Noob