Xin hat geschrieben:Reichen schon, aber ZIP Archive mit Makefile gehen quasi immer, während ich bei mehr als einer Dateien erstmal keinen Bock habe, ein Projekt aufzuziehen.
Ich musste erstmal überlegen, was du mit "Projekt" meinst... ich hab zu lange nicht mehr mit einer IDE gearbeitet xD
Xin hat geschrieben:Schließlich muss ich erstmal rausfinden, welche Abhängigkeiten eventuell noch zu installieren sind usw.
Die Abhängigkeiten stehen auch oben im "Bash-Teil" des Quellcodes
Xin hat geschrieben:Darf ich grob vermuten, dass hier kein Casting erwünscht ist, sondern - wie der Datentyp mit dem Stern vermuten lässt - eine Adresse, wo die Daten stehen?
Ich hab jetzt mal eine Struktur verwendet als Information, die übertragen werden soll:
Server:
Code: Alles auswählen
// ...
bool running = true;
unsigned int id = 0;
Data* data = NULL;
long tmp;
while (running) {
// Get Data
data = new Data();
std::cout << "foo=";
std::cin >> tmp;
data->id = id++;
data->foo = tmp;
// Make Packet
p->data = (Uint8*)data;
p->len = sizeof(Data);
p->address.host = hisip->host;
p->address.port = hisip->port;
// Send
std::cout << "Success: " << SDLNet_UDP_Send(udp, -1, p) << "\n";
if (tmp == 0) {
running = false;
}
delete data;
}
// ...
Client:
Code: Alles auswählen
// ...
bool running = true;
Data* data = NULL;
std::cout << "Waiting for data...\n";
while (running) {
if (SDLNet_UDP_Recv(udp, p)) {
data = (Data*)(p->data);
std::cout << "Incomming UDP Packet:\n"
<< "\tChannel: " << p->channel << "\n"
<< "\tData: " << data->id << " | " << data->foo << "\n"
<< "\tLen: " << p->len << "\n"
<< "\tMaxlen: " << p->maxlen << "\n"
<< "\tStatus: " << p->status << "\n"
<< "\tAddress: " << p->address.host << ":" << p->address.port << "\n";
if (data->foo == 0) {
running = false;
}
delete data;
}
}
// ...
Beim Server wird nun "Success: 1" nach dem Senden angezeigt, der Client liest aber noch nix...
LG Glocke
/EDIT: Ich habe nun "hisip" nochmal via "SDLNet_ResolveHost(hisip, "localhost", 14000);" geändert (also die IP nochmal richtig geholt) - jetzt liest der Client.
Mein Problem ist aber, dass sich der Client auf dem Server via TCP anmelden soll und der Server dann via UDP an die Clients schickt.
Für jeden Client nochmal den alten Host resolven (beim Login) würde folgendes an "Mehraufwand" bedeuten ... kp ob das "normal" ist..
Code: Alles auswählen
Uint32 number = SDLNet_Read32(&(hisip->host));
int a, b, c, d;
a = (number & 0xFF000000) >> 24;
b = (number & 0x00FF0000) >> 16;
c = (number & 0x0000FF00) >> 8;
d = (number & 0x000000FF);
char host[4] = {a, b, c, d};
SDLNet_ResolveHost(hisip, host, 14000);
Danach geht es aber O_o
Ich hoffe ihr wisst was ich meine xDD