Thread View: be.comp.programming
5 messages
5 total messages
Started by Bart Vandewoestyne
Sat, 12 Jul 2003 16:34
Winsock 2 sockets lezen en schrijven
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 16:34
Date: Sat, 12 Jul 2003 16:34
29 lines
2584 bytes
2584 bytes
Ik ben momenteel bezig aan het proberen om een unix applicatie om te zetten naar native Windows code (dus zonder dat ik gebruik moet maken van Cygwin en van die toestanden). Zij het A) als programmeer oefening en B) omdat ik denk dat dergelijke applicatie nog niet in Open Source vorm bestaat voor Windows. Nu krijg ik bij het runnen wel write errors als ik naar een socket probeer te schrijven. De unix-code schrijft en leest als volgt van de socket: len = read (s, &buf[total], count-total); write (s, cmd.buf, length+48) Nu heb ik die zaken gewoon overkopieerd, maar ik krijg bv. van die write de waarde -1 terug... en daarom begon ik te vermoeden dat er iets mis was met het schrijven naar de socket... toen ik op de msdn site onder de Winsock2 API zocht naar een write methode om te schrijven naar de socket vond ik die niet... ik vond enkel een 'recv' en een 'send' methode om naar die socket te schrijven. Vandaar dat ik nu aan het vermoeden ben dat ik door 'write' te gebruiken in feite de write methode om naar een file te schrijven aan 't oproepen ben en daardoor dan dus die error krijg... Klopt dat dat er onder Winsock2 geen read en write methodes bestaan, maar dat het send en recv moet worden? Tnx, mc303
Re: Winsock 2 sockets lezen en schrijven
Author: Nicolas Barbier
Date: Sat, 12 Jul 2003 16:43
Date: Sat, 12 Jul 2003 16:43
20 lines
1880 bytes
1880 bytes
Bart Vandewoestyne wrote: > Klopt dat dat er onder Winsock2 geen read en write methodes bestaan, > maar dat het send en recv moet worden? Winsock gebruikt andere "descriptors" voor sockets dan de rest van de API voor dingen zoals files gebruikt (als je API kopieert, is het toch logisch dat je er enkele fundamentele dingen uit verandert, niet?). Je zal dus read() en write() niet kunnen gebruiken (die denken dat het over file-achtige dingen gaat gaan), maar je moet expliciet duidelijk maken dat het over sockets gaat door recv() en send() te gebruiken. Om dezelfde reden kan je geen gewone close() gebruiken, maar moet je closesocket() (of iets dergelijks) gebruiken. /me schaamt zich bijna om zoveel onbenulligheden over een niet-vrij besturingssysteem te weten :-). -- Nicolas Barbier
Re: Winsock 2 sockets lezen en schrijven
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 17:40
Date: Sat, 12 Jul 2003 17:40
23 lines
2350 bytes
2350 bytes
Nicolas Barbier wrote: > > Winsock gebruikt andere "descriptors" voor sockets dan de rest van de API > voor dingen zoals files gebruikt (als je API kopieert, is het toch logisch > dat je er enkele fundamentele dingen uit verandert, niet?). > > Je zal dus read() en write() niet kunnen gebruiken (die denken dat het over > file-achtige dingen gaat gaan), maar je moet expliciet duidelijk maken dat > het over sockets gaat door recv() en send() te gebruiken. Om dezelfde reden > kan je geen gewone close() gebruiken, maar moet je closesocket() (of iets > dergelijks) gebruiken. OK, ik dacht al dat het zoiets was, wou gewoon even bevestiging... 't is voor mij ook allemaal nieuw h� ;-) > /me schaamt zich bijna om zoveel onbenulligheden over een niet-vrij > besturingssysteem te weten :-). Ach, het is u vergeven, en als het een troost mag zijn: de code die ik momenteel aan 't schrijven/porten ben zal vast en zeker Open Source zijn :-) Greetzzz, mc303
Re: Winsock 2 sockets lezen en schrijven
Author: Tim Van Wassenhove
Date: Sat, 12 Jul 2003 17:42
Date: Sat, 12 Jul 2003 17:42
27 lines
2021 bytes
2021 bytes
On Sat, 12 Jul 2003 18:43:58 +0200, Nicolas Barbier <anti@spam.invalid> wrote:
> Bart Vandewoestyne wrote:
>
>> Klopt dat dat er onder Winsock2 geen read en write methodes bestaan,
>> maar dat het send en recv moet worden?
>
> Winsock gebruikt andere "descriptors" voor sockets dan de rest van de API
> voor dingen zoals files gebruikt (als je API kopieert, is het toch logisch
> dat je er enkele fundamentele dingen uit verandert, niet?).
>
> Je zal dus read() en write() niet kunnen gebruiken (die denken dat het over
> file-achtige dingen gaat gaan), maar je moet expliciet duidelijk maken dat
> het over sockets gaat door recv() en send() te gebruiken. Om dezelfde reden
> kan je geen gewone close() gebruiken, maar moet je closesocket() (of iets
> dergelijks) gebruiken.
En als je gebruikt maakt van winsock.h moet je ook nog eerst een
WSADATA structuur initialiseren voor je iets uit die libary gebruikt...
WSADATA ws;
if (WSAStartup(MAKEWORD(1,1),&ws) != 0) {
fprintf(stderr,"WSAStartup failed.\n");
exit(1);
}
--
Visit my website at http://aardbei.madoka.be
Re: Winsock 2 sockets lezen en schrijven
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 22:19
Date: Sat, 12 Jul 2003 22:19
17 lines
1844 bytes
1844 bytes
Tim Van Wassenhove wrote:
>
> En als je gebruikt maakt van winsock.h moet je ook nog eerst een
> WSADATA structuur initialiseren voor je iets uit die libary gebruikt...
>
> WSADATA ws;
> if (WSAStartup(MAKEWORD(1,1),&ws) != 0) {
> fprintf(stderr,"WSAStartup failed.\n");
> exit(1);
> }
Ik gebruik momenteel winsock2.h. Is dat daar niet meer nodig misschien?
(zal het seffens eens proberen). Ik dacht dat ik dat in mijn code
gezet had om het te doen werken...
Greetzzz,
mc303
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads