?
okay, ich hab es jetzt so und es funktioniert
Der vector, oder eher array (mag ich persönlich lieber) ist global
// C++ Standard Includes
#include <iostream>
#include <thread> // std::this_thread::sleep_for
#include <chrono> // std::chrono::seconds
#include <array>
#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>
#include <signal.h>
#include <syslog.h>
/* includes headers */
#include "testserver.h"
using namespace std;
array<sockaddr_in,2> ClientAddr;
int main(int argc, char *argv[]) {
int ServerSock, n;
int length = 0;
socklen_t clientlen;
struct sockaddr_in server = {0};
struct sockaddr_in client = {0};
char buf[1024];
// 1. Socket create
if ( (!(ServerSock = socket(AF_INET,SOCK_DGRAM,0)) > 0) ) {
cout << "Creating Server Socket failed" << endl;
exit(-1);
}
length = sizeof(struct sockaddr_in);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(34567);
// 3. bind address and port to socket
if ( ( bind(ServerSock, (struct sockaddr*)&server, length) ) == -1 ) {
cout << "bind Server Socket failed" << endl;
exit(-1);
}
clientlen = sizeof(struct sockaddr_in);
for ( int i=0; i<2; i++) {
n = recvfrom(ServerSock,buf,1024,0,(struct sockaddr *)&client,&clientlen);
cout << "Gesendete Nachricht: " << buf << endl;
if (n == -1){
syslog( LOG_INFO, "recvfrom failed");
exit(-1);
}
ClientAddr[i] = client;
}
while(1){
for ( int i=0; i<2; i++) {
int n = sendto(ServerSock , "Hello. I'm the server..." ,1024,0,(struct sockaddr *)&ClientAddr[i] ,clientlen);
if (n<0) { cout << "Fehler beim Senden" << endl; }
}
std::this_thread::sleep_for (std::chrono::seconds(2));
}
closelog();
return EXIT_SUCCESS;
}