Kali idea gia m$ linux library.
Nikos Mavroyanopoulos
nmav at gnutls.org
Sat Sep 7 19:54:01 EEST 2002
On Fri, Sep 06, 2002 at 08:52:34PM +0300, George Kourtis wrote:
> Προσπαθώ να αναβαθμίσω παλιό κώδικα που λειτουργεί υλικό αυτόματης
> τηλεφωνίας (CTI AUDIOTEX κτλ).
> Η ανάπτυξη θα γίνει σε πλατφόρμα Windows διότι από τον κατασκευαστή
> καταργήθηκε (μάλλον προσωρινά) η υποστήριξη για Linux.
> Πρέπει όμως να παράγω κώδικα που να θέλει λίγες αλλαγές όταν θα αλλάξω
> πλατφόρμα. Επίσης θα ήθελα ένα μηχάνημα εφοδιασμένο με εξοπλισμό αυτόματης
> τηλεφωνίας να μπορεί να δέχεται εντολές από άλλο μηχάνημα που να έχει
> ενδεχωμένως και άλλο λειτουργικό.
Οπως σου είπε και ο Γιώργος, τα berkeley sockets, είναι 100% portable
μεταξύ διαφορετικών συστηματων (δεν έχω δει δικτυακό μηχάνημα να μην
εχει υποστήριξη γι'αυτά).
Αμεσως μετά θα πρέπει να επιλέξεις το πως θα επικοινωνεί η εφαρμογή
σου πάνω απο τα sockets (προτόκολο εφαρμογής).
Και εδώ έχεις επιλογές:
1. IETF SMTP-style. Χρησιμοποιείς αναγνώσιμα μηνύματα του στύλ:
HELO nikos
- 250 server Hello nikos at localhost
MAIL FROM: nikos at nikos.org
- 250 <nikos at nikos.org> is correct
Εδώ οι binary δομές μεταφέρονται συνήθως με base64 encoding. Το
πλεονέκτημα είναι μπορείς να κάνεις debug ευκολα (πχ με telnet)
2. ISO X.400-style. Χρησιμοποιείς ASN.1 με DER ή BER encoding rules.
Εδώ θα χρειαστείς κάποιον ASN.1 compiler, αν δεν θέλεις να το κάνεις
the hard way. Ενα πλεονέκτημα εδώ, είναι το σχεδιάζεις πολύ ευκολα[0] τα
structures που χρησιμοποιείς. Πχ:
XYZ ::= SEQUENCE {
X [0] INTEGER OPTIONAL,
Y [1] INTEGER,
Z [2] INTEGER }
3. Custom made style. Αυτή είναι η επιλογή στην οποία καταλήγουν
οι περισσότεροι, που δεν σχεδιάζουν προτόκολα για το IETF ή το ISO.
Αυτό γιατι τα (1),(2) χρειάζονται αρκετά πολύπλοκους parsers.
Ετσι βλέπεις στα περισσότερα specifications προτόκολων:
Το πακέτο Hello, έχει:
2 bytes το μέγεθος (ν)
1 byte τον τύπο
ν bytes το μήνυμα.
που κάνει πολύ ευκολη τη ζωή του τελικού προγραμματιστή. To μειονέκτημα
είναι οτι σπανίως είναι επεκτάσιμα αυτά τα προτόκολα.
[0]. Τα περισσότερα προτόκολα βέβαια φτάνουν σε ακρότητες όπως (X509):
Name ::= CHOICE { -- only one possibility for now --
rdnSequence RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
> Γιώργος Κούρτης
--
Nikos Mavroyanopoulos
mailto:nmav at gnutls.org
More information about the Linux-greek-users
mailing list