[C#] IPX/SPX

Pagina: 1
Acties:

  • decipherer
  • Registratie: Februari 2002
  • Laatst online: 12:26
Ik moet een applicatie te maken die de status van persen weergeeft. Op dit moment is op elke pers een persmonitor aangesloten die zorgt voor een grafische weergave (lokaal bij elke pers) van de persslagen. Tevens kan deze monitor ingrijpen wanneer een persslag fout dreigt te gaan (perskracht loopt te hoog op). De bedoeling is dat de software van deze persmonitoren om de zoveel slagen de status van de pers doorstuurt naar een server. Deze software is echter gedateerd en draait onder een real-time uitbreiding onder DOS. Er is geen TCP/IP beschikbaar maar wel IPX/SPX. Men wil de communicatie naar de server dus met IPX/SPX doen.

De server wordt geschreven in C#. Ik kan echter nergens informatie vinden over het opzetten van een IPX/SPX verbinding onder C#. In de ProtocolFamily enumeration en de ProtocolType enumeration komen ipx en spx beiden wel voor.
Kan iemand mij meer informatie verschaffen omtrent het gebruik van IPX/SPX in C#?

Ik heb ook ergens gelezen dat het nodig is zelf een IPXEndPoint klasse te maken die erft van de EndPoint klasse om zodoende met de Connect methode van Socket een verbinding op te kunnen zetten. Hierover zou ik ook graag meer te weten komen. Zoektochten mbv google leveren weinig op. IPX/SPX lijkt niet gebruikt te worden in .NET. ;(

De beste ideeën komen als je bezig bent.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14-02 19:13
Een SPX verbinding opzetten (IPX is stateless) gaat op dezelfde manier als een TCP verbinding, alleen met een ander protocol en een andere adressering. Volgens de documentatie lijkt de CLR beide te ondersteunen.

Ik heb het idee dat je nog niet zelf aan de slag bent gegaan. Je lijkt niet eens te weten of je nu IPX (datagrams) of SPX (streams) nodig hebt. Ga het eerst eens gewoon doen en kom hier dan terug als je op een concreet punt vastloopt. Het lijkt er nu op dat je niet eens specifiek weet wat je wil bereiken.

[ Voor 19% gewijzigd door Soultaker op 14-08-2006 14:28 ]


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Kun je niet eerst kijken of je TCP/IP werkend kan krijgen onder die DOS-app; lijkt me stukken minder werk als het wel lukt ...

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:20
SKiLLa schreef op maandag 14 augustus 2006 @ 14:33:
Kun je niet eerst kijken of je TCP/IP werkend kan krijgen onder die DOS-app; lijkt me stukken minder werk als het wel lukt ...
Waarom? Winsock is een abstractielaag op deze protocollen dus het zou niet al te moeilijk moeten zijn om dit voor elkaar te krijgen.

Iig lijkt het me minder werk dan een TCP/IP stack op een oud systeem te installeren, met alle moegelijke problemen van dien.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik gok dat een SocketAddress gewoon een winsock sockaddr structure encapsuleert. In de wsipx.h header van windows is deze voor ipx als volgt gedefinieerd:
C++:
1
2
3
4
5
6
struct sockaddr_ipx {
    short sa_family;
    char  sa_netnum[4];
    char  sa_nodenum[6];
    unsigned short sa_socket;
};


Dus je moet idd een IPXEndPoint maken die een SocketAddress retourneert in z'n Serialize() functie die bovenstaande data in zich heeft.

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.


  • decipherer
  • Registratie: Februari 2002
  • Laatst online: 12:26
Bedankt voor de reply's!
Soultaker schreef op maandag 14 augustus 2006 @ 14:27:
...
Je lijkt niet eens te weten of je nu IPX (datagrams) of SPX (streams) nodig hebt. ...
Wat ik uit verschillende teksten begrijp is dat IPX overeenkomt met IP en SPX met TCP. In dat geval heb ik toch juist beide nodig? SPX over IPX...
Wat ik uit jouw tekst begrijp is dat IPX overeenkomt met UDP?
.oisyn schreef op maandag 14 augustus 2006 @ 16:24:
Ik gok dat een SocketAddress gewoon een winsock sockaddr structure encapsuleert. In de wsipx.h header van windows is deze voor ipx als volgt gedefinieerd:
C++:
1
2
3
4
5
6
struct sockaddr_ipx {
    short sa_family;
    char  sa_netnum[4];
    char  sa_nodenum[6];
    unsigned short sa_socket;
};


Dus je moet idd een IPXEndPoint maken die een SocketAddress retourneert in z'n Serialize() functie die bovenstaande data in zich heeft.
Ik heb m'n IPXEndPoint klasse nu verder afgemaakt waarbij ik SocketAddress vul met bovenstaande waarden. Het lijkt goed te gaan en na wat debuggen krijg ik geen exceptions oid meer. De code voor de persmonitoren is alleen nog niet compleet dus ik mag daar lekker op wachten voordat ik dat verder kan testen.

Afijn, morgen eens testen of ik een verbinding tussen twee van m'n endpoints op kan zetten.
Nu moet ik alweer naar huis :(

De beste ideeën komen als je bezig bent.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

DeCIpHeReR schreef op dinsdag 15 augustus 2006 @ 14:35:
Wat ik uit verschillende teksten begrijp is dat IPX overeenkomt met IP en SPX met TCP. In dat geval heb ik toch juist beide nodig? SPX over IPX...
Wat ik uit jouw tekst begrijp is dat IPX overeenkomt met UDP?
Ja en nee. Het is niet helemaal op die manier vergelijkbaar. SPX is gelayered op IPX, waarbij die laatste stateless is. Dat is met TCP en IP ook zo idd. Maar als je als gebruiker datagrammen wilt versturen doe je dat niet direct met IP, maar met UDP, wat ook gelayered is op IP (dit omdat er veel meer protocollen bestaan die op IP gelayered zijn, en je dus niet zomaar zelf wat kan doen).

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.

Pagina: 1