Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehler bei accept()

Empfohlene Antworten

Veröffentlicht

Moin Leutz!

Ich hab hier ein Problem bezüglich Sockets. wenn ich das accept() aufrufe hält mein Prog an und lässt nichts mehr mit sich machen. Ich muss es dann immer abbrechen und ich weiß nicht warum. :( Ich bekomm nicht mal ne Fehlermeldeung!!! Weiterhin schreibt mir das Prog auch nichts mehr in meine Listbox. Wenn ich aber mit Haltepunkten arbeite und schritt für schritt durchgehe, dann zeigt er mir die Ausgaben an.Warum? Keine Ahnung *ratlosbin* :confused:

Hier mal der Hauptteil von meinem Code:


void MySniffer::lookforip(void)
{
int len = sizeof(sockaddr_in);
int len2 = sizeof(sockaddr);
int option_flag;

//Socket wird auf Lokalen Server gebunden, bei Fehlschlag gib den Error aus
if(bind(ServerSocket, (sockaddr*)&ServerSAddr, sizeof(ServerSAddr)) == SOCKET_ERROR)
{
Form1->ListBox1->Items->Add("Binding Socket failed: " + (AnsiString)WSAGetLastError());
return;
}

//Socket-Optionen werden festgelegt
if(setsockopt(ServerSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&option_flag, sizeof(option_flag)*2) == SOCKET_ERROR)
{
Form1->ListBox1->Items->Add("Setting Socket-Options failed: " + (AnsiString)WSAGetLastError());
return;
}

//Port wird abgehört, bei Fehlschlag gib den Error aus
if(listen(ServerSocket, 5) == SOCKET_ERROR)
{
Form1->ListBox1->Items->Add("Listening on Socket failed: " + (AnsiString)WSAGetLastError());
return;
}

//Endlosschleife
for(;
{
//bei Anfrage akzeptiere Verbindung
ClientSocket = accept(ServerSocket, (sockaddr*)&ClientSAddr, &len);

//wenn der ClientSocket nicht erstellt werden konnte gib den Error aus
if(ClientSocket == INVALID_SOCKET)
{
Form1->ListBox1->Items->Add("Initializing Client-Socket failed: " + (AnsiString)WSAGetLastError());
break;
}

//Ausgabe des Remote-Hostnamens, bei Fehler gib den Error aus
if(getpeername(ClientSocket, (sockaddr*)&ClientSAddr, &len2) == SOCKET_ERROR)
{
Form1->ListBox1->Items->Add("Getting Peername of Client-Socket failed: " + (AnsiString)WSAGetLastError());
}
else
{
IP = inet_ntoa(ClientSAddr.sin_addr);
Form1->ListBox1->Items->Add(IP);
}
Sleep(1000);
}
}
[/php]

P.S. das Ganze befindet sich in einer Klasse die ich geschrieben hab; der ServerSocket wird in einer anderen Methode initialisiert

Ich hoffe ihr könnt mir helfen?

Danke!

Danke Schön!

Dann werd ich mal versuchen das mein Prog weiterlaufen kann auch während es noch wartet.:cool:

*freudenschrei* es klappt!!!

Ich habs jetzt mit Hilfe von Threads gelöst. ich hab den Teil mit accept() per Thread aufgerufen und jetzt läuft mein Programm! Juhu :D :D :D

Danke!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.