c/c++ code für Portscanner

Hallo ich suche c / c++ Code für einen simplen Portscanner. Er sollte sich unter Linux und Windows mit MinGW (GCC) compelieren lassen. Nmap konnte ich unter Win32 nicht compelieren. Der Code sollte möglichst einfach sein und sich auf ver. Architekturen compelieren lassen. Hat wer ein gutes tut für Netzwerke + c ? Gruß
 
Original von nidda
C/C++ Code zu schreiben der sich auf Windows und Linux kompilieren lässt wird besonders bei Netzwerkprogrammierung wahrscheinlich schwierig. Bei dem Link oben ist aber für beide Betriebssysteme eine Version dabei.

ach was, wofür gibts denn präprozessordirektiven wie z.B. #ifdef?

Code:
#ifdef WINDOWS
do something;
#elsif LINUX
do something else;
#endif
 
gut, kann man natürlich so machen. ist aber meiner meinung nach eher umständlich und unübersichtlich.

Und die Winsock und BSDsock Funktionen sind zwar ähnlich aber nicht immer identisch.
 
Das stimmt so nicht.
Code den du unter Windows laufen lassen kannst, denn kannst du auch mit anderen Libs unter Linux laufen lassen.
Das ist ja das tolle an einer Programmiersprache, du hast die gleichen Befehle und musst nur darauf achten das die unterschiedlichen Betriebssysteme , Architekturen beruecksichtigt werden, was die Headerdatenen fuer dich uebernehmen.
Skript sprachen(in zusammenspiel mit den Interpretern) und Java in diesem zusammenhang nicht vergessen, sind genau aus diesem Prinzip stark.
Das einzige was C/C++ sehr von ihnen unterscheidet( abgesehen von OO-Programmen und OB-Programmen und solchen die keine Objecte kennen, oder Skripte) ist das es jedesmal neu kompilliert werden muss dafuer dann aber auch einen mehr oder weniger grossen Performancevorteil hat.
Der Vorschlag von Heinzelotte ist also gar nicht mal so schlecht, du schreibst dir einmal die Headerdatei, und ein ein Macro fuer den Code, denn da gibt es einen kleinen zusatz fuer Windows inder Vorbereitung der ports fuer den gebrauch, laesst das Macro ueber die Headerdateien steuern und brauchst dich nicht mehr darum zu kuemmern und das tolle ist: das ding ist wiederverwertbar.
mfg

sw33t


p.s.:
BTW wiso unuebersichtlich, datei 1 headerdatei
datei2 macro
datei 3 dein code,

//edit die 2.
Ich weiss nicht scheint bei mir brauch zu werden immer min 2* zu editieren*heul* ;)
Aber egal, ich habe dir mal ein Tutorial hochgeladen, ind em ist auch die konfiguration fuer die Headerdateien und gute Refereznen zu zusatzliteratur drin.
Hab damit auch angefangen Sockets zu benutzen(is aber shcon bald nicht mehr wahr)
Hier ist der Link.
Enjoy.
 
gut, kann man natürlich so machen. ist aber meiner meinung nach eher umständlich und unübersichtlich.

Und damit hast Du REcht- besonder was die Socketprogrammierung angeht.
Es faengt bei socket selbst an und geht mit fork und co weiter.

Das ist ja das tolle an einer Programmiersprache, du hast die gleichen Befehle und musst nur darauf achten das die unterschiedlichen Betriebssysteme , Architekturen beruecksichtigt werden, was die Headerdatenen fuer dich uebernehmen.
Nicht ganz- weil es eben ein paar fundamentale Unterschiede zwischen Unixen und Windows gibt.
Besonders da wo es auf Prozesssteuerung ankommt hat windows ganz andere Moeglichkeiten die eben Windows spezfisch sind. Wenn das alles so isi waere haetten wir auch einige leckerbissen an Software auch unter Linux zur verfuegung.
 
Original von Gulliver
gut, kann man natürlich so machen. ist aber meiner meinung nach eher umständlich und unübersichtlich.
Und damit hast Du REcht- besonder was die Socketprogrammierung angeht.
Es faengt bei socket selbst an und geht mit fork und co weiter.

das finde ich nicht.

du schreibst dir einfach zwei headerdateien, in denen du z.B. zwei Socket-Klassen definierst, einmal auf Windows- und einmal auf Linux-Art und Weise. Beiden Klassen gibst du den gleichen Namen und in wenn du die klasse benutzen willst, inkludierst du (mit so einem #ifdef/#elseif konstrukt) jeweils die zum kompilierenden System passende Headerdatei. Somit musst du deinen Code (zumindest was Sockets angeht) nicht mehr ändern, falls du das Programm auf der jeweils anderen Plattform laufen lassen willst und es funktioniert trotzdem. Das alles mit nur einer Benutzung von Präprozessordirektiven. Das ist meiner Meinung nach die praktikabelste Lösung.
 
Zurück
Oben