Προς το περιεχόμενο

Delphi component :TCP/IP - user defined data types


koyan

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Θέλω να φτιάξω μία εφαρμογή server-client σε Delphi, η οποία να χρησιμοποιεί tcp/ip.

Έχω δημιουργήσει τα δικά μου data types (τα οποία είναι αρκετά πολύπλοκα). Ορίζω αυτά τα data types και στο server και στο client. Υπάρχει κανένα component, που να κάνει επικοινωνία μέσω tcp/ip και να μπορεί και να στείλει user defined data types?

Ευχαριστώ.

Κωνσταντίνος

 

Δημοσ.

Δεν έχω ακούσει να υπάρχει κάποιο comp που να κάνει αυτό που ζητάς.

 

Απ'την άλλη μπορείς να δουλέψεις με pointers των data types που θες, και να μεταφέρεις εκεί το buffer από ένα απλό tcp/ip comp.

Δημοσ.

nai, uparxoun ta components TClientSocket kai TServerSocket pou leitourgoun se TCP kai kanoun akrivws auto pou thes,. Boreis mesw auton na stelneis kai na lambaneis streams sugxrona i asugxrona. Des to help tis delphi gia references kai ta demos gia paradeigmata.

Δημοσ.

Eeee sugnwmi, den proseksa kala auto pou zitas. Odws to na to kaneis me sockets einai belas, giati prepei na ftiakseis ena kala orismeno prwtokolo epikoinwnias pou na metatrepei ston server tin pliroforia twn domwn se stream kai o client na metafrazei to stream se domes pali.

 

Auto pou xreiazesai,einai kati pou meletaw teleutaia: Web services kai SOAP. Nomizw oti ama exeis mia apo tis teleutaies ekdoseis tis Delphi, diathetoun SOAP components. Me autin tin texnologia, boreis na ftiakseis katanemimena spftware components pou na basizodai se epikoinwnia mesw HTTP kai XML prwtokolo. Gia perissoteres plirofories, des kanena help.

Δημοσ.

νομιζω οτι τα web services σε αυτη την περιπτωση ειναι σαν να προσπαθεις να χτυπησεις μια μυγα με ενα κανονι!

 

Πιστευω οτι:

1.Διαβασε το documentation της Delphi για τα TClient/Server Socket .

2.προσπαθησε να ορισεις εναν απλοικο τροπο επικοινωνιας των 2 πλευρων.Καποια πολυ απλα command px LOGIN, EXIT, SENDMESSAGE ktl ktl..

3.Welcome to the world of network programming. Το μονο που πρεπει να προσεχεις ειναι οτι οταν γραφεις στο socket τα datatypes σου θα πρεπει να τα γραφεις σπασμενα στους απλους τυπους που εχουν βασιστει και στην συνεχεια η καθε πλευαρα που τα διαβαζει να συλλεγει τις πληροφοριες και να σχηματιζει το αντιστοιχο data -type.

 

ΠΡΟΣΟΧΗ

-------

Σε περιπτωση που δεν ξερεις τι εστι socket, κα πως δουλευουν..ΣΤΑΜΑΤΑ, και ψαξε για πληροφοριες πανω στην φυσιολογια του socket programming.

Πιστεψε ειναι μια φοβερη εμπειρια να καταλαβεις και να δουλευεις τετοιους μηχανισμους μιας και αργοτερα θα σου δωσουν την ευκαιρια να επεκτινεις τις δραστηριοτητες σου

 

References:

http://bdn.borland.com/article/0,1410,26276,00.html

 

Δημοσ.

 

Products:

Borland C++ Builder 5.x

 

Δεν είναι βιώσιμος ο κώδικας εάν χρησιμοποιήσει απλοϊκούς τρόπους, και γιατί να ξανα-εφεύρει τον τροχό?

 

------------------------

 

koyan : για να λες πως είναι αρκετά πολύπλοκα να φανταστώ πάνω από 1000? με pointers πιστεύω πως κάτι θα κάνεις.

 

GrMikeD : SOAP και WebServices έχουν η enterprise έκδοση του Delphi 6 και οι pro, ent και arch του Delphi 7. Ίσως να έχει κάποια πιο παλιά έκδοση, δεν μας διευκρίνησε ποια έκδοση έχει. Πολύ πιθανό να μπορέσει να το υλοποιήσει και μέσω αυτών των τεχνολογιών.

 

XML Components έχει και η διανομή Jedi VCL/JCL ( http://www.delphi-jedi.org/ ) εάν έχεις κάποια έκδοση που δεν έχει XML comp κτλ( υπάρχουν και δωρεάν wizards για webservices ), δοκιμασμένα με ικανοποίησαν πλήρως σε βαθμό που δεν το περίμενα προσθέτουν στον τελικό κώδικα 90-100kb αντί για 300-500kb (και λίγα λέω) για τα standar DOM XML comp του Delphi.

 

Ξανακάνε πάλι την ερώτησή σου εδώ

 

δες και εδώ

Δημοσ.

Οκ. Απαντώντας ένα ένα:

GrMikeD: "nai, uparxoun ta components TClientSocket kai TServerSocket pou leitourgoun se TCP".

- Αρχικά ξεκίνησα να το κάνω TClient/Server Socket. Έχω ήδη προχωρήσει αρκετά, αλλά το όλο πρόβλημα είναι ότι αισθάνομαι ότι όντως ξαναεφευρίσκω τον τροχό: Πρέπει να δημιουργήσω ένα σωρό πρωτόκολα επικοινωνίας κάνοντας ουσιαστικά την δουλειά μου μη "μοιράσιμη" με άλλους προγραμματιστές, και το κατάλαβα αυτό the hard way :-)

Γι'αυτό και ψάχνω να βρώ εάν κάποιος έχει κάνει κάτι παρόμοιο.

 

GrMikeD: "Auto pou xreiazesai,einai kati pou meletaw teleutaia: Web services kai SOAP"

 

Δεν είχα ξαναακούσει για το SOAP. Και ένα απλό ψάξιμο στο "http://www.w3.org/TR/SOAP/" το δείχνει πολύ ενδιαφέρον. Δεν είδα κάτι για TCP αλλά θα συνεχίσω να ψάχνω.

 

damn3: Χρησιμοποιώ Delphi 5. Οι παραπάνω πληροφορίες με οδήγησαν σε ψάξιμο που με οδήγησε στο ASTA technologies. Δεν ξέρω εάν τελικά θα κάνει αυτό που θέλω, αλλά θα το δοκιμάσω.

 

Σας ευχαριστώ όλους για τις απαντήσεις :-)

 

Be well and prosper,

Koyan

 

Δημοσ.

ASTA components? ksereis kostizoun poli... Ypothetw oti ta kaneis ola auta gia logariasmo etairias? Giati ta ASTA an kai den ta exw xrisimopoiisei pote, exw akousei oti einai megali istoria.

 

Padws o DAMN3 exei dikio, isws tha borouses na ta kaneis me XML components pou tha to dimiourgeis apo tin mia pleura, kai stin alli na to kaneis parse gia na gemiseis tis domes.

Δημοσ.

"ASTA components? ksereis kostizoun poli... Ypothetw oti ta kaneis ola auta gia logariasmo etairias? ". Oxi akrivos, alla ean xreiastei mporoun na plirothoun... Bebaios panta tha protimousa open source components, me tin anesi meta na mporo na doso oti ftiakso san open source se opoion thelei na to xrisimopoiisei....

 

Anyway: den exo paixei katholou me XML components. Tha to psakso kai afto.

Efxaristo

Koyan

Δημοσ.
koyan

said:

Οκ. Απαντώντας ένα ένα:

Δεν είχα ξαναακούσει για το SOAP. Και ένα απλό ψάξιμο στο "http://www.w3.org/TR/SOAP/" το δείχνει πολύ ενδιαφέρον. Δεν είδα κάτι για TCP αλλά θα συνεχίσω να ψάχνω.

 

Τα Web services ειναι τυπικα transport portocol neutral. μπορεις να τα υλοποιησεις απο απλο socket μεχτι και SMTP.

Συνηθως βεβαια η κλασικη υλοποιηση ειναι το HTTP με οτι αυτο σημαινει.

 

Παρολα αυτα μπορεις να κανεις αυτο που εγω ονομαζω λυση SOAP μεσω Λαμιας! (Αν πραγματικα νομιζεις οτι το SOAP ειναι λυση για σενα)

 

Προσωπικα θα χρησιμοποιουσα plain XML θα οριζα..ενα προτοκολο για μενα...και θα το εστελνα δεξια και αριστερα μεσα απο τα sockets.

Θα ηθελα να ξερω αν οι πλευρες που θα μιλανε μεταξυ τους ειναι ιδιας πλατοφορμας! Γιατι εκει ισως τa dataencoding rules kai oi de/serializers που προσφερουν τα διαφορα libraries σου κανουν ην ζωη πιο ευκολη!

Παρολα επειδη η XML ειναι XML και μπορεις να περιγραψεις τα παντα , μπορεις να αυτοσχεδιασεις! Το SOAP δεν ειναι η απαντηση σε ολα ειδικα σε τετοιες περιπτωσεις..το λεει και το ονομα του Simple Object Access Protocol με φανεργ ταση προς RPC (αν και τυπικα μπορεις να κανεις οτι θελεις)

.

 

παλιοτερα ειχαμε αρχησει μια προσπαθεια που προς το παρον εχει παγωσει να φιαξουμε ενα messenger για την κοινοτητα.ειχαμε αποφασισει οτι το προτοκολο επικοινωνιας θα βασιζοταν σε XML. Ειχα γραψει τοτε...ενα κομματι του προτοκολου ουσιαστικα οριζα τα commands σε XML δεν ξερω αν μπορει να σε βοηθησει ..θα το βρεις εδω ¨

 

http://www.members.tripod.com/apoc_gr/Docs/IMCommProt.htm

 

 

Δημοσ.

Ο Apoc έγραψε:

"Θα ηθελα να ξερω αν οι πλευρες που θα μιλανε μεταξυ τους ειναι ιδιας πλατοφορμας! "

 

Αρχικά θα είναι (server side) Kylix με (client side) Delphi/Kylix.

...

Χωρίς να θέλω να σε φορτώσω με άχρηστες πληροφορίες: ουσιαστικά θέλουμε να κάνουμε μετατροπή της stand alone εφαρμογής που έχουμε φτιάξει σε server/client. Δεδομένου δε, ότι η τάση σε όλη την οργάνωση (Greenpeace) είναι να μεταφερόμαστε σε Linux σιγά σιγά, θέλουμε (η ομάδα μου και εγώ) να φτιάξουμε το server σε Linux, και να έχουμε τα UI και σε Linux και σε Win. Δεδομένου δε ότι χρειαζόμαστε πολλές φορές να κάνουμε δουλειά remotelly, θέλαμε να κάνουμε εξ αρχής την εφαρμογή να είναι βασισμένη σε tcp/ip.

Και έτσι κατέληξα σε αυτές τις ερωτήσεις.

 

Ευχαριστώ για τις πληροφορίες και τις απόψεις,

Koyan

Δημοσ.

το kylix Πραγματι παιζει καλα..ειναι καλο εργαλειο.

 

εφοσον λοιπον εχουμε Delphi να μιλαει σε Delphi. Το μονο που πρεπει να κανετε ειναι να παρετε τον κωδικα του server..να τον ριξετε στο Kyliz, Και να αρχησετε να βλεπετε σε ποια σημεια θελει αλλαγες εξαιτιας πλατοφορμας. Εχω δει τετοια επιχειρηματα και με σωστη δουλεια παιξανε πολυ καλα!

 

αυτο που θες να προσεξεις ειναι οτι τα sockets ειναι λιγο διαφορετικα στο Linux,.τα semaphores Και το threading!

 

Thats it!

Δημοσ.

uparxei ena freeware nomizw component tis Delpgi to QuickRTTI to opoio borei na sou swsei ta objects sou se XML kai meta na ksanafortosei ta object apo XML! opote isws boreis na xrisimopoiiseis auto to XML gia protokolo. Exw dei na to xrisimopioune gia analogo skopo. Psakse sto google.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...