Just nu i M3-nätverket
Jump to content

problem med bind i linux


Yoshi

Recommended Posts

Hej igen.

Fortfarande problem med min socketprogrammering. Nu är det funktionen bind som krånglar. Det ser ut som följer

if(bind(iSocket,(struct sockaddr*) &sSocket, sizeof(sSocket)))

{

cout << " Binding succesfull" << endl;

}

else

perror("Error in bind");

 

Då får jag i linux felmedelandet

Error in bind. No such file or Directory

 

vidare har jag deklarerat följande

sSocket.sin_port = 1515;

 

men när jag skriver ut det från strukten

/*Get port nr to addres struct*/

int iSizeOfsSocket = sizeof(sSocket);

socklen_t* socketLength=(socklen_t*)iSizeOfsSocket;

getsockname(iSocket, (struct sockaddr*)&sSocket, socketLength);

 

/*Transfere portnr from struct variable iPort*/

iPortNr = ntohs(sSocket.sin_port);

cout << "Server portNR" << iPortNr << endl;

 

får jag svaret 60165;

 

Är det någon som vet var felet ligger??

Tack på förhand Yoshi!

Link to comment
Share on other sites

jag kan tyvärr inte hjälp dig med felmeddelandet då jag inte fick det när jag testade din kod men det är inte omöjligt att det har med vad som finns längre upp att göra då det skiljer sig mellan ditt exempel och min testkod

 

Raden "if(bind(iSocket,(struct sockaddr*) &sSocket, sizeof(sSocket)))"

skall vara if(!bind(iSocket,(struct sockaddr*) &sSocket, sizeof(sSocket))) alt if(bind(iSocket,(struct sockaddr*) &sSocket, sizeof(sSocket))==0) då noll returneras vid korrekt utförande

 

att du får fel port beror på att du inte konverterar den när du sätter den

förändra raden sSocket.sin_port = 1515; till sSocket.sin_port = htons(1515);

 

hur ser din socket() deklaration ut?

 

 

 

 

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...