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

Reverse Connection (Visual basic )


ntaryl

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

Δημοσ.

Καλησπερα

 

Το συγκεκριμενο Θεμα δημιουργηθηκε ετσι ωστε να εξηγησει τι σημαινει η ενοια αυτη.

Πριν μερικες μερες ειχα μια μικρη συζητηση περι συνδεσεων (Client-Server).Οταν ανεφερα την ενοια αυτη αρχισε να με ρωταει τι σημαινει κτλπ.

Λιγο πολλοι ολοι ξερουμε και εχουμε δει πως υλοποιειται μια συνδεση μεταξυ ενος Client-Server.Αποτελειται απο ενα προγραμμα(Client) και ενα δευτερο(Server).H επικοινωνια βασιζεται σε Sockets.

1)

Direct connection

O Server ανοιγει ενα port και περιμενει συνδεσεις .Ο Client απλα συνδεεται στην διευ8υνση του Server και στο port που εχει ανοιξει πιο πριν ..

2)

Reverse connection

Στην περιτωση μας γινεται ακριβως το αντιθετο .Ο Client ανοιγει ενα port και περιμενει συνδεσεις . O Server συνδεεται στην διευθυνση του client και στο port που ειχε ανοιξει νωριτερα

Στο συγκεκριμενο παραδειγμα θα χρησιμοποιησουμε το (Mswinsck.ocx)

Νομιζω οτι ο κωδικας ειναι αρκετα κατατοπιστικος .

Προσπαθησα να τον απλοποιησω οσο περισοτερο μπορουσα .

καλο απογευμα

reverse how to.zip

Δημοσ.
Καλησπερα

 

Το συγκεκριμενο Θεμα δημιουργηθηκε ετσι ωστε να εξηγησει τι σημαινει η ενοια αυτη.

Πριν μερικες μερες ειχα μια μικρη συζητηση περι συνδεσεων (Client-Server).Οταν ανεφερα την ενοια αυτη αρχισε να με ρωταει τι σημαινει κτλπ.

Λιγο πολλοι ολοι ξερουμε και εχουμε δει πως υλοποιειται μια συνδεση μεταξυ ενος Client-Server.Αποτελειται απο ενα προγραμμα(Client) και ενα δευτερο(Server).H επικοινωνια βασιζεται σε Sockets.

1)

Direct connection

O Server ανοιγει ενα port και περιμενει συνδεσεις .Ο Client απλα συνδεεται στην διευ8υνση του Server και στο port που εχει ανοιξει πιο πριν ..

2)

Reverse connection

Στην περιτωση μας γινεται ακριβως το αντιθετο .Ο Client ανοιγει ενα port και περιμενει συνδεσεις . O Server συνδεεται στην διευθυνση του client και στο port που ειχε ανοιξει νωριτερα

Στο συγκεκριμενο παραδειγμα θα χρησιμοποιησουμε το (Mswinsck.ocx)

Νομιζω οτι ο κωδικας ειναι αρκετα κατατοπιστικος .

Προσπαθησα να τον απλοποιησω οσο περισοτερο μπορουσα .

καλο απογευμα

 

Αυτη τη στιγμη, εχεις κανει το ιδιο, απλα βαφτησες τον client -> server, και τον server -> client.

Οποιος ανοιγει θυρα ειναι σερβερ!τελος!

Δημοσ.

Ο server δεν μπορεί να ανοίξει connection στον client. Αν υπάρχει δυνατότητα να ανοίγουν και οι δύο υπολογιστές συνδέσεις ο ένας προς τον άλλον, τότε λέγεται Peer 2 peer.

Δημοσ.

Απλα με αυτον τον τροπο μπορεις να συνδεθεις ενω εισαι πισω απο ενα firewall ,τοπικο δικτυο .

Μας δινει μεγαλη ευελιξια

Δημοσ.

Το μόνο που μπορείς να κάνεις για το θέμα του Firewall, είναι να ανοίξει ο client την σύνδεση προς τον server, να έχεις βάλει μεγάλο timeout και να κάνεις ένα ping έστω κάθε τόσο για να μην πέσει η σύνδεση.

Αυτό όμως επιβαρύνει τον server. Τα windows έχουν όριο τα 10 ανοιχτά connections, τα οποία μπορείς να τα ανεβάσεις αλλά όχι και πολύ. Χώρια που δεσμεύονται πόροι στον server για κάθε connection.

Δημοσ.

Φιλε μου πολυ σωστα

ο client συνδεεται πανω στον Server το Firewall δεν επιτρεπει εισερχομενες συνδεσεις αλλα μονο εξερχομενες .Αρα ο Client συνδεεται ανενοχλητος στον Server (control).

 

 

Υ΄γ προσπαθω να φτιαξω το Server να δεχεται συγκεκριμενο οριο συνδεσεων (10)

Δημοσ.

Αρχικά σιγουρέψου ότι ο server σου σηκώνει 10 connections. Πρόσεχε γιατί τα connections μοιράζονται στα websites του Server.

Μετά στην εφαρμογή σου δήλωσε μια shared μεταβλητή και αύξανέ την για κάθε νέο connection, μείωνέ την για κάθε connection που έκλεισε ή το έκλεισες λόγω timeout, έτσι θα ξέρεις πόσα connections έχεις ανοιχτά. Εναλλακτικά δήλωσε ένα shared arraylist με τα connections.

Δημοσ.

Καλησπερα φιλε μου

Λοιπον το να βαλω οριο συνδεσεων τελικα το καταφερα .

στο Listen

 

>
If Winsock1.UBound = 10 Then '/Τσεκαρει αν το ι  ειναι ισο με το 10  
Winsock1(index).Close  '/αν να τοτε  κλεινει το socket
Else
Winsock1(index).LocalPort = Text1.Text
Winsock1(index).Listen
CmdListen.Enabled = False
End If

και αυτο στο ConnectionRequest

>
i = i + 1
If Winsock1.UBound < 10 Then
Load Winsock1(i)
Winsock1(i).Accept requestID
Winsock1(i).SendData "Sinfo"
End If

 

Υ.γ Αυτο που θελω ειναι να μπορω να ανακατανεμω τα socket οταν καποιο κλεισει .Αν ειναι για παραδειγμα το 3 τοτε το 4 8α γινει 3 και ου το καθε εξης

ευχαριστω πολυ

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

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

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