Toon posts:

[C++] DOS Sockets

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb op mijn stage de opdracht gekregen om voor een pc waar alleen dos op draait een programma te maken die email ophaalt van een pop3 server en het later ook uit kan printen.

Nu heb ik op http://www.dmp.com.tw/tech/dsock/ een library gevonden voor DOS Sockets..

Iemand hier toevallig ervaring met deze sockets ? Ik ga me er morgen in verdiepen en ik ben benieuwd of het lukt.. :)

Als iemand een andere oplossing heeft hoor ik het graag :)

Verwijderd

er bestaan standaard geen sockets in dos, je kan een packet driver laden (van de netwerkkaart fabrikant) die zichzelf hookt op port 0x60 of 0x61.
de library waar jij het over hebt is waarschijnlijk een (tcp/)ip layer voor tussen deze packet driver en je eigen programma, zit er niet gewoon een functionlist bij?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

'hooken op port 0x60' lijkt me een beetje onwaarschijnlijk, aangezien DOS niet protected mode is en dus kun je ook geen rechten toekennen aan poortjes (en dus in principe redirecten)

jij bedoelt waarschijnlijk interrupt 0x60

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Ik denk eerder gezegd dat het simpeler is om naar een echt OS te switchen dan om DOS te laten netwerken. Als er uiteraard massa's legacy code op DOS draait klopt dit niet.

Die BSD socket library ziet er vrij standaard uit en mature, dus dat zit wel goed, zolang je een ethernet interface hebt die ondersteunt wordt.

Echter, imho is werken met sockets zonder dat je kan multitasken een pure hel, alhoewel dit voor een simpele POP client nog zal meevallen. Vergeet echter maar dat je ooit iets serverachtig zal kunnen doen onder dos.

Veel succes en sterkte gewenst ;)

Verwijderd

sorry, je hebt gelijk, iterrupt 0x60, port 0x60 was van het keyboard :S

Verwijderd

Topicstarter
Wat een moeilijke taal allemaal, ik heb nog nooit iets met sockets gedaan in c++, dus ik heb eigenlijk geen idee waar en hoe ik moet beginnen :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

XTerm89D schreef op 18 september 2002 @ 19:44:
Echter, imho is werken met sockets zonder dat je kan multitasken een pure hel, alhoewel dit voor een simpele POP client nog zal meevallen. Vergeet echter maar dat je ooit iets serverachtig zal kunnen doen onder dos.


een thread-switcher implementeren in een DOS-applicatie is geen probleem, juist omdat je alle vrijheid hebt (daarom kun je ook zo fijn een ander OS booten vanuit DOS :))

Als die applicatie gebruik maakt van een DOS-extender (dus 32bits pmode) wordt het echter al wat lastiger, hoewel er wel open source DOS extenders zijn die je evt aan kunt passen (of misschien bestaat er zelfs wel een extender met multi-thread support? :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Verwijderd schreef op 18 september 2002 @ 19:42:
er bestaan standaard geen sockets in dos, je kan een packet driver laden (van de netwerkkaart fabrikant) die zichzelf hookt op port 0x60 of 0x61.
de library waar jij het over hebt is waarschijnlijk een (tcp/)ip layer voor tussen deze packet driver en je eigen programma, zit er niet gewoon een functionlist bij?
Een hele uitgebreide functionlist zelfs:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
DSock_Open() 
DSock_Close() 
DSock_Version() 
DSock_DoBootp() 
DSock_LoadConfigFile() 
DSock_GetMacAddr() 
DSock_AddGateway() 
DSock_GetGateway() 
DSock_AddDomainNameServer() 
DSock_GetDomainNameServer() 
DSock_Resolve() 
DSock_GetNetmask() 
DSock_SetNetmask() 
DSock_GetHostIp() 
DSock_SetHostIp() 

SocketCreate() 
SocketDestory() 
SocketClose() 
SocketAbort() 
SocketBind() 
SocketListen() 
SocketAccept() 
SocketConnect() 
SocketRecv() 
SocketRecv2() 
SocketRecvFrom() 
SocketSend() 
SocketSend2() 
SocketSendTo() 
SocketDataReady() 
SocketPutChar() 
SocketGetChar() 
SocketPutString() 
SocketGetString() 
SocketIsConnected() 
SocketIsTcpPortUsed() 
SocketIsUdpPortUsed() 
SocketFindFreeTcpPort() 
SocketFindFreeUdpPort() 
SocketFlush() 
SocketFlushNext()

Dit leek me meer dan genoeg, maar ik heb gehoord dat er al netwerk was op die dos bak, dus die packet driver enzo werken dan toch al :?
Pagina: 1