PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bei Verbindungsaufbau über Sockets immer "Connection refused" (C)



Andy1988
03-01-2005, 03:22
Ich hab mal angefangen unter Linux ein kleines Prog zu schreiben, was mir demnächst mal ein paar Daten über meinen mlDonkey Server ausgeben soll. Und irgendwie muss ich ja auch an diese Daten kommen *g*
Also hab ich mal angefangen n bischen was über Sockets zu suchen und bin auf dieses Tut gestoßen:
http://www.pc-adviser.de/socket_programmierung.htm

Ich hab alles verstanden und während des Lesens mal angefangen zu programmieren. Nur leider kam nichts vernünftiges raus. Immer bekomm ich ein "Connection refused". Dann hab ich mal hier im Forum gesucht und ein ähnliches Programm gefunden. Das mal kompiliert und ausgeführt, auch n "Connection refused". Schließlich hab ich mal das Client Programm von der Webseite mit dem Tut kompiliert und das geht! Nun hab ich aber die handling()-Routine rausgenommen und was ist? Auch ein "Connection refused"! Was kann das sein! Ich hab zig Dienste und Server in- und außerhalb meines Netzes probiert. Immer dasselbe.
Hier mal mein Sourcecode (ich denke der reicht. Die anderen beiden Progs sehen eh genauso aus):

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int s;
struct sockaddr_in srv;

s = socket(AF_INET, SOCK_STREAM, 0);
if (s == -1)
{
perror("socket failed()");
return 2;
}

srv.sin_addr.s_addr = inet_addr("127.0.0.1");
srv.sin_port = 80;
srv.sin_family = AF_INET;

if (connect(s, (struct sockaddr*)&srv, sizeof(srv)) == -1)
{
perror("connect failed()");
return 3;
}
else
{
printf("Verbindung erfolgreich");
}

close(s);

return 0;
}


Danke für eure Hilfe!

Nuke
03-01-2005, 09:58
Hi.

Also soweit ich weiß musst du root sein, um bei Linux auf die Ports 1-1024 zugreifen zu können.

Das war zumindest bei meinen Java-Versuchen so. Erst als ich bei meinen Client<->Server-Tests Ports über 1024 nutzte, funktionierte es als normaler User.

Andy1988
03-01-2005, 14:56
Nee, das geht leider auch nicht!
Ich hab gestern auch shcon Ports über 4000 probiert. Hier auf meinem Rechner als normaler User und per SSH, als root, auf meinem Home-Server. Beides funktionierte nicht. Jetzt hab ich das nochmala ls root auf meinem Rechner gemacht, aber es geht auch nichts!

MrIch
03-01-2005, 16:09
man muss root sein um einen server auf den ports 1-1024 aufzumachen... zum Zugreifen braucht man das sicher nicht.

Für Mldonkey gibt es ein standarisiertes Interface.... das webinterface eigent sicher eher nicht dafür da dort häufig Änderungen vorgenommen werden,

Andy1988
03-01-2005, 17:52
Hm... Ich weiß echt nicht mehr worans liegt!

Jaja.. Da gibts dieses GUI Protkoll! Aber das kann ich schlecht benutzen, wenn ich mich mit nichts verbinden kann! :D

Andy1988
04-01-2005, 17:28
Sorry für den Doppelpost, aber sonst sieht keiner meinen Beitrag ;)

Kann es sein, dass das irgendein komischer Bug im 2.6.9-r1 Kernel ist? Evtl. auch einfach nur n Konfigurationsfehler meinerseits drin!
Denn aufm Server geht das nicht und da läuft der. Bei mir aufm Rechner läuft der und es geht nicht. Ich werd das ganze jetzt mal unter Windows zurecht schustern und mal schauen, obs da geht!

Andy1988
05-01-2005, 19:41
Ich hab den Fehler endlich!

Ich hab statt
srv.sin_port = htons(22); immer
srv.sin_port = 22; geschrieben! :mad: