🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#4787
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 16:34
29 lines
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
#4788
Author: Nicolas Barbier
Date: Sat, 12 Jul 2003 16:43
20 lines
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
#4789
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 17:40
23 lines
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
#4790
Author: Tim Van Wassenhove
Date: Sat, 12 Jul 2003 17:42
27 lines
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
#4791
Author: Bart Vandewoestyne
Date: Sat, 12 Jul 2003 22:19
17 lines
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