04. december 2000 - 12:24Der er
16 kommentarer og 1 løsning
Socket i C/C++
Jeg har kigget en masse kildekode igennem og forsøgt at stjæle hvor jeg kunne - men lige lidt hjælper det!! Jeg beder om hjælp...Hvad er der fx. i vejen med følgende eksempel ?
hvilke includes skal med? Jeg bruger VC++6 under WIN98...
if ((connect(socket, (LPSOCKADDR)(&servAddr), sizeof(servAddr))) < 0) { return; }
// write login, password and sign on/off selection to socket i = 0; while (i < messageLength) { int writtenSoFar = write(socket, tosend+i, messageLength-i); if (writtenSoFar <= 0) { fprintf(stderr, \"slic: Error during write to server\\n\"); close(socket); return; } i += writtenSoFar; }
der er også et sted derude, hvor en fyr i enten C++ users Journal eller Dr. Dobbs. skrev en artikel om portabelt socket stuff. Det har jeg prøvet og det virker.
hvis du har noget der virker så bare kom med det! Jeg afviser dit svar for jeg synes det er lovlig abstrakt...på dine links fandt jeg da en del vedr. mit spørgsmål...men jeg har allerede en masse og derfor vil jeg gerne have noget konkret at forholde mig til!
Jeg har included socket.h - og i VC++6 skriver jeg read( og så popper parameter listen op som sædvanligt...hvorfor den så skriver undeclared identifier ved jeg ikke??!
Jeg er bange for, at det jeg har tilbage er kode jeg anvender ifm. arbejde, og det kan jeg ikke give. Men jeg er på ferie i denne uge, og skal da gerne se om jeg kan finde artiklen og evt. fakse den til dig.
Men var problemet med din egen kode ikke blot det, at du ikke inkludere winsock headeren?
ok! under signoff skulle der ikke have stået 2 - og ikke 1 !! Men de skal da bruges til at sende til serveren LOGIN og PASSWORD er defineret ovenfor til at være xxxxx og yyyyy!! kig i koden...
Nu har jeg selv fundet en løsning! Det viste sig at være nemmest med CSocket og funktionerne Send & Receive....Det var også det jeg selv havde prøvet først - for der slap jeg for at resolve remotehost; det var bare med forkert PORT nummer -159 istedet for 259 DOUGH!!
moykal -> du får imidlertid lidt point! for du fik mig til at prøve med csocket igen!!
HOV! moykal -> du har ikke svaret på noget siden jeg afviste dit svar!! Nå 20 point kan du vel undvære ?? ellers svar obskurt på et hvilket som helst af mine spm. og du får de 20 point - OK?
Jeg er nok alligevel ikke helt værdig til at modtage points. Jeg har jo i grunden ikke givet dig noget konkret du kunne bruge til noget, så vi må hellere lade det blive ved det. Ellers tak. Glad for at du selv kom videre. Held og lykke med det. Og KOM SÅ VIDERE TIL .NET... så skal du ikke tænke på alt det low-level skidt. Det, der irriterer mig mest med sockets - uden at have den store praktiske erfaring med det - er, at det i grunden er lidt svært at lave generelle biblioteker (hvilket jeg prøvede - men fejlede - at refere til at en eller anden gut endeligt havde lavet), der blot anvendte socketlib og virkede. Min - noget tidligere erfaring fra Linux og UNIX har været, at der har været en masse hardcodede konstanter i bibliotekerne, såsom hvor mange samtidige listeners etc., at opgaven at generalisere var umulig, hvis det altså skulle gøres ordentligt. Men... fuck det... og hyg dig...
Selv om du får det til at kompilere, så vil du ikke komme ret langt med koden pga. følgende:
if ((him = gethostbyname(\"192.168.30.2\")) == NULL) return;
gethostbyname tager ikke ip-numre og vil altid returnere NULL, jvf.:
\"The gethostbyname function cannot resolve IP address strings passed to it. Such a request is treated exactly as if an unknown host name were passed.\"
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.