Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

11

24.01.2014, 18:52

Dann verwendest du trotzdem eine Bibliothek. Du wirst ja wohl nicht den Treiber direkt ansprechen^^
Der Networkteil der SFML dürfte dir da noch einiges Abnehmen. Trotzdem wird es kein Zuckerschlecken, daraus ein Spiel zu machen.
Es gibt sicher spezielle Netzwerkbibliotheken für Spiele auf hohem Abstraktionsniveau(einfach zu verwenden), die dir bei der Entwicklung mehr helfen können. Deren Namen kann ich dir zwar nicht nennen, aber es gibt sie mit Sicherheit. Einfach suchen.
Wenn du gleich eine Gameengine wie Unity oder das UDK nutzt, wird dir noch mehr Arbeit abgenommen und du kannst dich aufs wesentliche konzentrieren.

Du kannst dir wahrscheinlich nicht vorstellen wie viel Arbeit es ist etwas mehr zu machen als nur ein paar Pakete zu versenden. Ich habe es selber mit der SFML versucht und würde heute, ein Jahr später, so viel anders machen, dass ich fast alles umschreiben müsste. Zu Beginn dieses Übungsprojektes hatte ich schon mindestens 3 Jahre Erfahrung mit der objektorientieren Programmierung.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (24.01.2014, 18:58)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

24.01.2014, 19:33

Mal ne andere Frage:
Wozu brauchst du überhaupt die eigene IP?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

24.01.2014, 19:43

Der einzig sinnvolle Verwendungszweck, der mir momentan einfällt, wäre sie für LAN-Spiele anzuzeigen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Gelöschter Benutzer

unregistriert

14

24.01.2014, 20:58

So, dieses Zeit lasse ich mir Zeit für die Antworten. @Nachoman: jetzt weis ich was du meinst :) "wsock32.lib". @David: der Verwendungszweck wäre ein kleines lokales Multiplayer-RPG. Man kann es sich denke ich wie einen Minecraft-Server (der, in dem man selber die .exe starten muss) vorstellen. Auf einem PC wird der Server gestartet (mit Map, Spielerdaten, usw.) und die anderen PC's verbinden sich dann mit ihm. Es ist ein kleines SDL-Projekt.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

15

25.01.2014, 11:01

Sende doch vorab vom Client einen Broadcast und schau, welche Server sich melden. Das ist der übliche Weg, in einem LAN Server zu finden.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Gelöschter Benutzer

unregistriert

16

26.01.2014, 13:42

Kein system! System ist böse!

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string> 
#include <iostream> 
#include <stdio.h> 

const std::string exec(const std::string& cmd) { 
FILE* pipe = popen(cmd.c_str(), "r"); 
if (!pipe) return "ERROR"; 
char buffer[128]; 
std::string result; 
while(!feof(pipe)) { 
if(fgets(buffer, 128, pipe) != NULL) 
result += buffer; 
} 
pclose(pipe); 
return result; 
}


Im Übrigen könnte dir das helfen. :)

MfG
Check
Ich hätte mal ein paar Fragen zu dem Eintrag (mal wieder :) ). 1) Für was steht der Parameter "const std::string& cmd"? Ist das C? Weil ich verwende nur C++ (eigentlich :D ). Ich vermute mal das soll das gleiche sein wie die "main"-Funktion. Nun zur zweiten Frage: "popen" und "pclose" geht bei mir nicht, obwohl ich auch die '#include' eingebunden habe. Naja, meine Vermutung ist, dass es sich um C handelt? Oder? Und es gibt keine einzige Funktion in irgendeiner "lib" die einfach die IP als string zurückliefert? Auch nicht bei "wsock32.lib"?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

26.01.2014, 14:00

Ich hätte mal ein paar Fragen zu dem Eintrag (mal wieder :) ). 1) Für was steht der Parameter "const std::string& cmd"? Ist das C? Weil ich verwende nur C++ (eigentlich :D ).

Dann scheinst du C++ aber nicht sonderlich gut zu kennen, denn std::string ist wohl eine der bekanntesten Klassen in der C++-Standardbibliothek.

18

26.01.2014, 14:05

Die Funktion ist eine Alternative zu system(command) und der Parameter cmd muss einfach nur das Command beinhalten. Dass du das mit dem üblichen Einstiegspunkt, der main-Funktion, gleichsetzt, finde ich irgendwie ziemlich wtf.
Was popen und pclose anbelangt, so möchte ich mich entschuldigen, ich verwechselte die Deklarationen in Anbetracht des OS. Für Windows einfach ein _ vor beide setzen und plötzlich werden sie gefunden. ;)
Der Soruce ist also:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string> 
#include <iostream> 
#include <stdio.h> 

const std::string exec(const std::string& cmd) { 
FILE* pipe = _popen(cmd.c_str(), "r"); 
if (!pipe) return "ERROR"; 
char buffer[128]; 
std::string result; 
while(!feof(pipe)) { 
if(fgets(buffer, 128, pipe) != NULL) 
result += buffer; 
} 
_pclose(pipe); 
return result; 
}


MfG
Check

Gelöschter Benutzer

unregistriert

19

26.01.2014, 14:05

nein, std::string ist mir schon bekannt :) nur ich wusste nicht was "cmd" bedeuten soll? Aber egal, ich habe eine Lösung gefunden:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
std::string getIP() 
{WORD wVersionRequested;/char name[255]; 
std::string ip;PHOSTENT hostinfo; 
wVersionRequested = MAKEWORD( 2, 0 );if ( WSAStartup( wVersionRequested, &WsaData ) == 0 ) 
{if( gethostname ( name, sizeof(name)) == 0) 
{if((hostinfo = gethostbyname(name)) != NULL) 
{ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list); 
} 
} 
}return ip; 
}


WsaData wird schon vorher initialisiert. Vielen Dank für eure Hilfe :thumbsup:

20

26.01.2014, 14:33

C-/C++-Quelltext

1
2
3
//...
const std::string exec(const std::string& cmd) { 
//...

Kleine Anmerkung zum Code: Rückgabewert sinnvollerweise ohne const. Falls ein const std::string zurückgegeben wird, wird das Ergebnis der Funktion immer kopiert. Ohne const wird move-Semantik benutzt.
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Werbeanzeige