Freie Ports
lima-city → Forum → Programmiersprachen → Java
anwendung
auslese
bord
code
compiler
datei
doofe frage
endung
entsprechende datei
erstellen
fehler
import
port
posten
projekt
quellcode
setzen
studio
verbindung
windows
-
Hallo
(ich hätte das ganze auch in C/C++ und/oder PHP+MySQL machen können, aber dann hätte ich es
zwei mal posten müssen, was ich nich wollte. Der Source ist in Java also schreibe ich es mal hier rein)
ich habe eine frage: ich möchte alle freien ports (unbelegte Ports) auslesen etwa so wie hier:
http://www.informatikerboard.de/topic,287,-freie-ports---netzwerkprogrammierung.html
Nur geht das auch in PHP oder C?
Könnte mir das einer mal in php oder c erklären oder mal bitte den sourcecode posten?
Wäre echt super ;)
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Geht unter jeder Sprache die Socket Verbindungen aufbauen kann.
Einfach von 1 bis 65536 loopen und für jeden Port versuchen eine Verbindung aufzubauen. Wenn die Verbindung erstellt werden konnte ist der Port "derzeit" frei und wird von keiner anderen Anwendung zum selben Zeitpunkt verwendet.
Eigentlich kannst du den Code aus dem Link den du gepostet hast doch übernehmen. In PhP sieht das nicht viel anders aus. -
naja aber der code muss erst mit nem java compiler kompiliert werden das geht doch in php z.B nicht
und in C, soll es da die endung .c haben und in nem c compiler kompiliert werden?
achso und dann steht ja noch das hier:
import java.net.DatagramSocket;
import java.net.SocketException;
public class test
und ob sich das mit C verträgt -
//Are we debugging? //#define DEBUG #include <stdio.h> #include <stdlib.h> #ifndef WIN32 #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #endif #ifdef WIN32 #include <windows.h> #include <winsock2.h> #endif int main(void) { int i; //laufvariable int sock; //socket struct sockaddr_in addr; #ifdef WIN32 WSADATA wsa; if(WSAStartup(MAKEWORD(2,0),&wsa)!=0) { printf("fehler: winsock konnte nicht gestartet werden!\\n"); return 1; } #ifdef DEBUG else printf("winsock gestartet...\\n"); #endif #endif sock=socket(AF_INET,SOCK_STREAM,0); //socket erstellen if(sock<0) //Invalid socket { printf("fehler: socket konnte nicht erstellt werden!\\n"); #ifdef WIN32 WSACleanup(); #endif return 1; } #ifdef DEBUG else printf("socket erstellt...\\n"); #endif for(i=1;i<=65536;++i) { memset(&addr,0,sizeof(addr)); //Adresse erst auf 0 setzen addr.sin_family=AF_INET; addr.sin_port=htons(i); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(sock,(struct sockaddr*)&addr,sizeof(addr))<0) { printf("fehler: connect gescheitert!\\n"); printf("Port %i ist belegt!\\n"); } else printf("Port %i ist frei\\n",i); #ifdef WIN32 closesocket(sock); #else close(sock); #endif } #ifdef WIN32 WSACleanup(); #endif return 0; }
Mit C sollte es ca. so aussehen, ist allerdings noch komplett ungetestet und zum kompilieren unter Windows muss der Quellcode noch gegen "ws2_32.lib" gelinkt werden. Diese Datei ist z. B. bei Visual Studio dabei.
€dit: Immer diese nervigen doppelten Backslashes...
Beitrag geändert: 14.8.2008 12:58:32 von kochmarkus -
und zum kompilieren unter Windows muss der Quellcode noch gegen "ws2_32.lib" gelinkt werden. Diese Datei ist z. B. bei Visual Studio dabei.
und wie linkt man den source mit ws2_32.lib :$?
Als Compiler hab ich "nur" Dev-C -
Ein neues Projekt erstellen und in den Projektoptionen unter Libaries die entsprechende Datei hinzufügen.
-
unter Libaries die entsprechende Datei hinzufügen.
Sry wenns ne doofe frage ist aber woher bekomme ich die ws_win32.lib?
Beitrag geändert: 14.8.2008 13:08:36 von sy -
Sry wenns ne doofe frage ist aber woher bekomme ich die ws_win32.lib?
Du hast eine PN...
-
danke dir!
-
naja aber der code muss erst mit nem java compiler kompiliert werden das geht doch in php z.B nicht
und in C, soll es da die endung .c haben und in nem c compiler kompiliert werden?
Ich sag ja, du kannst es auch über PHP machen. In der PHP Hilfe-Datei steht unter Sockets genug Info-Material um den Rest selbst zu schreiben. PHP hat schließlich auch Netzwerk Funktionalitäten an Bord.
-
öhm kleines prob. bei neues projekt nimmt dev c++ nur *.dev dateien und keine *.lib
mach ich was falsch? achso und da steht auch nur static libary *.a
Beitrag geändert: 14.8.2008 13:53:01 von sy
Du musst ein neues leeres C Projekt starten, dann kopierst du meinen Quellcode in die main.c, klickst dann auf Projektoptionen und trägst dort unter Libaries die ws2_32.lib ein.
Danach solltest du das Programm kompilieren und ausführen können. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage