gripmaster
Well-Known Member
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 ! :-/
sysctl asgt mir:
Kann das was mit diesen Einstellungen zu tun haben, oder bin ich auf dem Holzweg und es liegt an etwas ganz Anderem ?!
Steh echt aufm Schlauch! ;-)
Hat jemand vielleicht einen Tipp ?
gruß,
gripmaster
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 ! :-/
Code:
#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 ?!
*/
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;
}
sysctl asgt mir:
Code:
net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
net.inet.ip.portrange.reservedhigh: 1023
net.inet.ip.portrange.reservedlow: 0
net.inet.ip.portrange.randomized: 1
net.inet.ip.portrange.randomcps: 10
net.inet.ip.portrange.randomtime: 45
Kann das was mit diesen Einstellungen zu tun haben, oder bin ich auf dem Holzweg und es liegt an etwas ganz Anderem ?!
Steh echt aufm Schlauch! ;-)
Hat jemand vielleicht einen Tipp ?
gruß,
gripmaster