network bzw. port-programming in c++
fresserettich 25.06.2003 - 21:20 1555 20
fresserettich
Here to stay
|
habe folgendes problem in c++: ich muss bei einem rechner bestimmte ports checken und zwar ob diese offen sind oder nicht? und ich bräuchte dazu die nötige funktion und habe leider keine ahnung wie ich es angehen, soll und auch keine ahnung nach was in eventuell suchen soll (ps kommts ma bitte ned mit google ) kann mir da wer weiterhelfen?
|
FMFlash
tranceCoder
|
ich nehme an es gilt die verwendung von TCP. wenn du an einen port connectest der geschlossen ist dauert es in der regel erheblich länger bis der versuch fehlschlägt als wenn der port offen ist (und kein dienst die verbindung akzeptiert). das würde ich mir zunutze machen. vielleicht gibt es aber auch eine effektivere methode, ich lass mich überraschen
|
funka
Legend ex-prophet(down below)
|
fm ich schaetz sein lehrer will einfach das er per port versucht eine socket aufzumachen und wenns klappt das auszugeben
|
FMFlash
tranceCoder
|
schön und gut, nur das ist etwas anderes als zu checken ob der port offen oder geschlossen ist.
|
fresserettich
Here to stay
|
also muss gleich mal vorweg nehmen es ist nicht für die schule sondern für ne lan und der des organisiert braucht des proggi und ich habs gesagt ich probiers mal also es ist keine hü sondern ich brauchs privat ja also ich wär schon mal glücklich wenn mir wer sagen könnt wie ich überhaupt zu einem bestimmten port eine connection aufstellen kann
|
FMFlash
tranceCoder
|
|
fresserettich
Here to stay
|
da dieses thema nicht in wenigen sätzen verständlich demonstriert werden kann gibts hier ein ausführliches tutorial der grundlagen englisch danke erst mal ist der link auf im tuterial auf oc.at weil da hätt ich eigentlich geschaut
|
FMFlash
tranceCoder
|
jap, englisch, aber wenn du ein deutsches findest, lass dich nicht aufhalten ka obs in der liste steht, ich hab den link grad auf die schnelle rausgesucht ...
|
BuSHidO
ist süß
|
UDP
|
Eat my shorts
Little Overclocker
|
socket programming http://www.fsoft.de/netkomp/das skript das du suchst, das wird sicher net lang, ich glaub in reinem C kann man das in wenigen Zeilen abhandeln, wie eh schon gesagt brauchst nur einen connect auf den ziel port machen, der liefer -1 wenn er net erreichbar, somit is das proggy eh schon wieder erledigt.
|
chaze
STIEGL Case 0wn0r
|
jap, englisch, aber wenn du ein deutsches findest, lass dich nicht aufhalten
ka obs in der liste steht, ich hab den link grad auf die schnelle rausgesucht ... imho findest das im VC++ in 21 Tagen kapitel 19
|
atrox
in fairy dust... I trust!
|
ist schon seit jahren der "standard", und sollte spätestens seit matrix reloaded in die breite öffentlichkeit geleakt sein: http://www.nmap.org/anaonsten ist selbstprogrammieren immer spannend und man lernt viel dabei .
|
atrox
in fairy dust... I trust!
|
ist der link auf im tuterial auf oc.at weil da hätt ich eigentlich geschaut jetzt schon
|
fresserettich
Here to stay
|
jetzt hab ich an code nur hab ich irgendwie probs beim compilieren im vs .net immer so linking probs hat da jemand ne ahnung was es da haben könnte? #include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>
//#include <stdlib.h>
//#include <Af_irda.h>
void WSAInit(void)
{
WORD wVersionReg = MAKEWORD(1,1);
WSADATA wsaData;
if (int err = WSAStartup(wVersionReg, &wsaData) != 0)
{
puts("Fehler: Initialisieren - WinSock.dll!");
}
} //WsaInit
void main()
{
int i,j,contr;
int ports[50][20];
char ips[50][20];
char *str;
for(i=0;i<50;i++)
for(j=0;i<20;j++)
ports[i][j]=0;
for(i=0;i<50;i++)
strcpy(ips[i],"noip");
cout <<"Eingabe mit 'e' beenden; max. 50 IPs mit max. 20 Ports"<<endl;
/* eingabe*/
/*for(i=0;i<50 && strcmp(str,"e")!=0;i++)
{
cout<<"Bitte geben Sie die IP ein:"<<endl;
cin >>str;
if(strcmp(str,"e")!=0)
{
strcpy(ips[i],str);
cout <<"Eingabe mit 'e' beenden"<<endl;
for(j=0;j<20 && strcmp(str,"e")!=0;j++)
{
cin>>str;
if(strcmp(str,"e")!=0)
ports[i][j]=atoi(str);
}//for
}//if
}//for
/* eingabe */
i=0;
while(1)
{
if(strcmp(ips[i],"noip")==0)
i=0;
if(i==50)
i=0;
cout <<"Port-Check der IP:"<<ips[i]<<endl;
SOCKET sock = INVALID_SOCKET;
struct sockaddr_in server;
server.sin_addr.s_addr = inet_addr(ips[i]);
server.sin_family = AF_INET;
WSAInit();
for(j=0;i<20 && ports[i][j]!=0;j++)
{
server.sin_port = htons(ports[i][j]);
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
puts("Fehler beim Erstellen des Socket!\n");
}//if
contr = connect(sock, (sockaddr *) &server ,sizeof(server));
if (contr < 0) printf("\n\tPort %d closed", ports[i][j]);
else printf("\n\t### Port %d open ###", ports[i][j]);
closesocket(sock);
}//for
WSACleanup();
}//while
}//main
|
that
ModeratorHoffnungsloser Optimist
|
|