Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.03.2002, 12:04
Sccar



hiho
folgendes problem:
ich starte mein server programm, alles klappt wunderbar. ich starte mein client programm, klappt auch. ich versuche zu connecten und er löst den Invalid Sock Fehler aus (im code ganz unten). der fehler den ich mache müßte imo irgendwo in diesem teil der WndProc liegen. bitte klärt mich auf, was mach ich falsch :/

sccar

if(WSAStartup(MAKEWORD(2,0), &wsa))
__Error("WSAStartup Fehler!", true);

__acceptsock = socket(AF_INET, SOCK_STREAM, 0);

__if(acceptsock == INVALID_SOCKET)
____Error("Acceptsock Fehler!", true);

__if(SOCKET_ERROR == WSAAsyncSelect(acceptsock, hWnd, WM_SOCKET_NOTIFY, FD_ACCEPT))
____Error("WSAAsyncSelect Fehler: Acceptsock!", true);

__memset(&addr,0,sizeof(SOCKADDR_IN));
__addr.sin_family = AF_INET;
__addr.sin_port = htons(3009);
__addr.sin_addr.s_addr = INADDR_ANY;

__if(SOCKET_ERROR == bind(acceptsock,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)))
____Error("Bind Fehler: Acceptsock!", true);

__if(SOCKET_ERROR == listen(acceptsock, 10))
____Error("Listen Fehler: Acceptsock!", true);

__return true;
case WM_SOCKET_NOTIFY:
__wEvent = LOWORD(lParam);
__wError = HIWORD(lParam);

__switch(wEvent)
__{
__case FD_ACCEPT:
____if(wError)
______Error("Accept Fehler!", true);

____client = accept(wParam, NULL, NULL);

____if(client = INVALID_SOCKET)
______Error("Invalid Socket!", true);

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
001
16.03.2002, 12:54
Prefect



Zitat:

____if(client = INVALID_SOCKET)
______Error("Invalid Socket!", true);

Seit wann programmierst du in C? Nicht böse gemeint, aber das muß == heißen, nicht =. Den Fehler hab ich in meinen ersten C-Monaten auch bis zum Gehtnichtmehr gemacht...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
002
16.03.2002, 13:02
Sccar



seit etwa 2 1/2 jahren prefi, man wird wohl mal nen schreibfehler machen dürfen.das problem ist aber dadurch nicht behoben (ich hab die besagte abfrage erst nachdem auftreten des probs eingeführt)

__if(SOCKET_ERROR == WSAAsyncSelect(client, hWnd, WM_SOCKET_NOTIFY, FD_READ))
____Error("WSAAsyncSelectFehler: client!", true);

__recv(client, &buf[0], BUF_LEN, 0);

__if(WSAEWOULDBLOCK != WSAGetLastError())
____Error("Receive Fehler!", true);

so gehts weiter, und der receive - fehler wird ausgelöst.

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}


Dieser Beitrag wurde am 16.03.2002 um 13:05 von Sccar bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
16.03.2002, 22:08
Darkman|two



ich bin mir nicht ganz sicher aber
Quellcode:
__addr.sin_addr.s_addr = INADDR_ANY;

ist das nicht falsch muss da net z.B.
Quellcode:
__addr.sin_addr.s_addr = ("127.0.0.1");

oder anstatt der ip dann ne andere von nem anderen User!
Ich bin mir nicht ganz sicher aber kann das der Fehler sein??

--

zum Seitenanfang zum Seitenende Profil || Suche
004
17.03.2002, 09:15
Sccar



nein, sonst könnte der server nur mit einem client (dem mit der entsprechenden ip adresse) verbunden werden.

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
005
17.03.2002, 09:55
Tron



was fuer ein fehler (nummer) gibt WSAGetLastError() zurueck direkt nach dem accept(...) ?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
006
17.03.2002, 11:15
Sccar



nummer 8, aber bist du dir sicher, dass das eine relevanz hat? ich meine das sock, was er erstellt, scheint ja ok zu sein (weil != INVALID_SOCKET), oder?

lol @ sig

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
007
17.03.2002, 11:26
Tron



hattest du nicht gesagt du bekommst KEINEN gueltigen socket?

btw: 8 kann nicht sein, alle WSA-fehler sind > 10000

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
008
17.03.2002, 11:42
Sccar



nein das socket scheint gültig zu sein, aber ich darf nix lesen (WSAGetLastError liefert etwas anderes als WSAEWOULDBLOCK). --> post 002

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
009
17.03.2002, 11:52
Prefect



Zitat:

__if(SOCKET_ERROR == WSAAsyncSelect(client, hWnd, WM_SOCKET_NOTIFY, FD_READ))
____Error("WSAAsyncSelectFehler: client!", true);

__recv(client, &buf[0], BUF_LEN, 0);

__if(WSAEWOULDBLOCK != WSAGetLastError())
____Error("Receive Fehler!", true);

Fehlt da nicht ein if (recv(...) == -1) ?
Du brauchst den Rückgabewert doch sowieso, ansonsten kannst du die Länge der empfangenen Daten ja nicht herausfinden...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
010
17.03.2002, 11:57
Tron



jo, prefect hat recht, das muesste so aussehen wie in meinem thread (http://www.thewall.de/ThWboard/showtopic.php3?threadid=24523&time=1016361202

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
011
17.03.2002, 12:05
Sccar



vielen dank für eure hilfe jetzt klappts. ich hab nämlich noch einen dicken fehler gemacht. ich bin davon ausgegangen das der mechanismus so funktioniert:
recv ->> WSAEWOULDBLOCK ->> FD_READ ->> verarbeitung
(so stands im petzold)
aber man muss es wohl so machen
FD_READ ->> recv ->> verarbeitung

*freu*

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche