Hi,
ich versuch grad etwas socketprogrammierung unter Linux und bleib beim Server hängen. Wenn mein server listen() ausführen soll, dann macht er das wartet aber nicht auf eine Verbindungsanfrage sondern macht gleich mit dem nächsten code weiter.
Warum macht er das? Normalerweise müsste listen() solange laufen bis eine Verbindungsanfrage gesendet wird.
Sourcecode server:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
int c,port;
sockaddr_in addr;
cout<<"Geben sie den Port an: ";
cin>>port;
c=socket(AF_INET,SOCK_STREAM,0);
if(c==-1)
{
cout<<"ERROR: socket()"<<endl;
}
else
{
cout<<"Socket erstellt"<<endl;
}
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(c,(sockaddr*)&addr,sizeof(sockaddr))==-1)
{
cout<<"ERROR: bind()"<<endl;
}
else
{
cout<<"An Port "<<port<<" gebunden."<<endl;
}
if(listen(c,3)==-1)
{
cout<<"ERROR: listen()"<<endl;
}
else
{
cout<<"listen() wird ausgeführt!"<<endl;
}
int c2;
socklen_t sinsize=sizeof(sockaddr_in);
c2=accept(c2,(sockaddr*)&addr,&sinsize);
if(c2==-1)
{
cout<<"ERROR accept()"<<endl;
}
else
{
cout<<"accept() angenommen"<<endl;
}
cin.get();
return 0;
}
Ich bezweifle aber das es am code liegt, vielleicht hab ich ja was übersehen.
Danke schon mal für eure Hilfe.
MfG
cesupa
ich versuch grad etwas socketprogrammierung unter Linux und bleib beim Server hängen. Wenn mein server listen() ausführen soll, dann macht er das wartet aber nicht auf eine Verbindungsanfrage sondern macht gleich mit dem nächsten code weiter.
Warum macht er das? Normalerweise müsste listen() solange laufen bis eine Verbindungsanfrage gesendet wird.
Sourcecode server:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <iostream>
using namespace std;
int main()
{
int c,port;
sockaddr_in addr;
cout<<"Geben sie den Port an: ";
cin>>port;
c=socket(AF_INET,SOCK_STREAM,0);
if(c==-1)
{
cout<<"ERROR: socket()"<<endl;
}
else
{
cout<<"Socket erstellt"<<endl;
}
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(c,(sockaddr*)&addr,sizeof(sockaddr))==-1)
{
cout<<"ERROR: bind()"<<endl;
}
else
{
cout<<"An Port "<<port<<" gebunden."<<endl;
}
if(listen(c,3)==-1)
{
cout<<"ERROR: listen()"<<endl;
}
else
{
cout<<"listen() wird ausgeführt!"<<endl;
}
int c2;
socklen_t sinsize=sizeof(sockaddr_in);
c2=accept(c2,(sockaddr*)&addr,&sinsize);
if(c2==-1)
{
cout<<"ERROR accept()"<<endl;
}
else
{
cout<<"accept() angenommen"<<endl;
}
cin.get();
return 0;
}
Ich bezweifle aber das es am code liegt, vielleicht hab ich ja was übersehen.
Danke schon mal für eure Hilfe.
MfG
cesupa