ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1044
1044
EMPFEHLEN
-
Hallo,
vorweg ich habe erst mit der Netzwerkprogrammierung angefangen und versuche jetzt einen Server zu machen, der einfach Daten enfängt, es geht bis bind gut, aber dann trifft ein Fehler auf den ich einfach nicht komme ( WSAGetLastError gibt bei bind 10038 zurück ) :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
#include <io.h> #include <iostream> #include <cstring> #include <string> #include <winsock.h> #include "socket.h" using namespace std; // Verbindung zu Winsock.dll herstellen void Socket::wsastartup( WORD wVersion, WSADATA& wsaData ){ if ( WSAStartup ( wVersion, &wsaData ) != 0 ) { cout << "Fehler bei WSAStartup!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError(); exit ( 1 ); } } // Den Socket erzeugen int Socket::socket ( ) { if ( sock = ::socket( AF_INET, SOCK_STREAM, 0 ) == SOCKET_ERROR ) { cout << "Fehler bei socket!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError( ) << endl; system( "PAUSE" ); exit ( 1 ); return -1; }else return sock; } // Socket an einen Server binden bool Socket::bind( const int port){ int bind_return; m_addr.sin_family = AF_INET; m_addr.sin_port = htons ( port ); m_addr.sin_addr.s_addr = INADDR_ANY; cout << "sock : " << sock <<endl; system( "PAUSE" ); system( "PAUSE" ); bind_return = ::bind ( sock, ( struct sockaddr * ) &m_addr, sizeof ( m_addr ) ); if ( bind_return == SOCKET_ERROR ) { cout << "Fehler bei bind!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError () << endl; system ( "PAUSE" ); exit ( 1 ); return false; }else return true; } // Einen Port abhören void Socket::listen( const int MAXCONNECTIONS) { if ( ::listen ( sock, MAXCONNECTIONS ) == SOCKET_ERROR ){ cout << "Fehler bei listen!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError ( ) << endl; system ( "PAUSE" ); exit ( 1 ); } } // Eine Warteschlange einrichten void Socket::accept ( Socket& new_socket ) { int addrlen = sizeof ( m_addr ); if ( new_socket.sock = ::accept ( sock, ( sockaddr * ) &m_addr, ( int * ) &addrlen ) ) { cout << "Fehler bei accept!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError ( ) << endl; system ( "PAUSE" ); exit ( 1 ); } } // Daten entfangen void Socket::recv ( string& s ) { string buf; int recv; if ( recv = ::recv ( sock,( char * ) buf.c_str(), buf.size(), 0 ) == SOCKET_ERROR ) { cout << "Fehler bei recv!\nDas Programm muss beendet werden!\n"; cout << WSAGetLastError ( ) << endl; system ( "PAUSE" ); exit ( 1 ); } else s = buf; } // Socketschließen void Socket::close( ) { closesocket( sock ); } // WSACleanup : Verbindung zur Winsock.dll beenden void Socket::CleanUp( ) { WSACleanup( ); }
ich hoffe ihr könnt mir helfen
Danke im vorraus
Gruß
-
„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
hmm, blöder Fehler der mir da passiert ist , aber vielen vielen Dank .
Du hast meine Sorgen gelöst
Gruß
Ähnliche Themen
-
bind() address already in use
Von extexo im Forum C/C++Antworten: 6Letzter Beitrag: 20.08.09, 21:00 -
Apache startet nicht. Fehler: could not bind
Von fanste im Forum Hosting & WebserverAntworten: 7Letzter Beitrag: 04.05.06, 15:52 -
bind()
Von coolfire im Forum .NET ArchivAntworten: 3Letzter Beitrag: 17.02.04, 15:20 -
Probleme mit DNS (bind 9)
Von juhu im Forum NetzwerkeAntworten: 3Letzter Beitrag: 27.06.03, 10:43 -
Bind Dns [8|9]
Von lexi im Forum NetzwerkeAntworten: 2Letzter Beitrag: 10.02.02, 11:34





Zitieren


Login






