Sockets
-
hallo zusammen:
Ich habe hier mal einen kleinen Beispiel-Server.
Er soll auf Port 8080 lauschen und einen Text ausgeben, wenn sich ein Client
verbunden hat.Problem: Die accept-Funktion wird aufgerufen, Port 8080 ist aber laut "netstat -a" nicht offen. Auch ein telnet localhost 8080 geht nicht.
Ich finde den Fehler einfach nicht! Jemand aus dem IRC hat mir gesagt, dass der code bei ihm laufen würde !
Hat jemand vielleicht einen Tipp ?!
#include <iostream> #include <sys/socket.h> #include <arpa/inet.h> //htonl #include <netinet/in.h> using namespace std; int main(int argc, char **argv) { int mySocket = -1; int curSocket = -1; struct sockaddr_in MyAd; struct sockaddr remoteAd; /* TCP Socket erzeugen AF_INET = IPv4 SOCK_STREAM = Stream socket -> TCP */ mySocket = socket(AF_INET,SOCK_STREAM,0); /* AF_INET = IPv4 Port: 8080 INADDR_ANY = jedes Interface */ memset(&MyAd,0,sizeof(MyAd)); MyAd.sin_family = AF_INET; MyAd.sin_port = 8080; MyAd.sin_addr.s_addr = htonl(INADDR_ANY); //socket binden int ret = bind(mySocket,(struct sockaddr *)&MyAd,sizeof(MyAd)); if(ret == -1) { cout << "bind error" << endl; perror("bind"); return -1; } //listen if(listen(mySocket,3) == -1) { cout << "listen error" << endl; perror("listen"); return -1; } /* What do i wrong ?? accept doesn't return, but i can't telnet to localhost 8080 and netstat -a doesn't show an open port ?! IT DOESN'T EVEN PRINT THE "listening..."-line !?! */ socklen_t l = sizeof(remoteAd); curSocket = accept(mySocket,(struct sockaddr*)&remoteAd,&l); if(curSocket == -1) { cout << "accpet error" << endl; perror("accept"); return -1; } else { cout << "a client has been connected" << endl; } return 0; }
-
hm das einzige was mir so auffaellt ist
MyAd.sin_port = [b]htons[/b](8080);
-
Ich werd verrückt, das wars!
Vielen Dank entelechie !!grup,
grips