γρήγορη δικτύωση με "streaming" server - τι και πώς
καλησπέρα και χρόνια πολλά!

έχω στο ιντερνέτι ένα debianάκι (intel atom cpu, σύνδεση 100/100) όπου έχω μπόλικο 1080 και εσχάτως 4κ περιεχόμενο. αυτό το περιεχόμενο θέλω να το στριμάρω στο media player στο σπίτι μου (manjaro@intel nuk i5 με σύνδεση 200/200).

με sshfs δουλειά δεν γίνεται, όχι μόνο σ…
ok κοιτα… για εναν streaming server 2 λυσεις υπαρχουν. η κανεις transcoding και το στελνεις μεσω rtmp ή το κανεις μεσω https. αυτο που δεν μπορεις να κανεις με εναν streaming server ειναι να το κανεις mount σε κανονικο gnu/linux mountpoint. στο kodi ομως μπορεις να κανεις “mount” το directory του ht…
Αρκετά ασαφείς, δημοσιεύσετε πάντα ένα απόσπασμα. Αν τυλίξτε το NetworkStream μπορείτε να πάρετε από TcpClient.GetStream () τότε δεν υπάρχει πρόβλημα. Ρητά αναφέρεται στο άρθρο MSDN για NetworkStream:



> 
> Ανάγνωσης και εγγραφής μπορούν να πραγματοποιηθούν ταυτόχρονα σε ένα στιγμιότυπο της κλάσης NetworkStream χωρίς την ανάγκη για συγχρονισμό. Εφ 'όσον υπάρχει ένα μοναδικό νήμα για τις λειτουργίες εγγραφής και ένα μοναδικό νήμα για τις λειτουργίες ανάγνωσης, δεν θα υπάρξει διασταυρούμενη παρεμβολή μεταξύ διαβάζει και να γράφει κλωστές και δεν απαιτείται συγχρονισμός.
> 
> 
> Υπάρχουν τόσοι πολλοί παράγοντες για την απόδοση του server (CPU, RAM, I / O, μνήμη cache, τοπικές ή εξωτερική βάση δεδομένων, δικτύωση, κλπ) που δεν μπορείτε να guesstimate ακόμη και το ποσό των servers που απαιτούνται για ένα συγκεκριμένο έργο.


Θεωρώ ότι όποιος προσπαθεί να το καταλάβουν αυτό θα είναι κάτω τούτοις λάθος δρόμο, επειδή συχνά έχουν κάποια ρεαλιστική ιδέα ότι η περιοχή πρόκειται να κάνει αυτό πρόκειται να είναι εξωφρενικά δημοφιλές.


Η συμβουλή μου, μόνο την κατασκευή της εφαρμογής σας και να χρησιμοποιήσετε 1 διακομιστές, ας υποθέσουμε μπορεί να χρειαστεί ένα σύμπλεγμα διακομιστών, έτσι χτίσει το λογισμικό σας ανάλογα (η οποία με τη ΝΕΤ σημαίνει λίγο πολύ ότι δεν κάνει τίποτα διαφορετικό). Μόνο αγοράσουν περισσότερους servers όταν έχετε μια πραγματική ανάγκη, την αγορά / ενοικίαση διακομιστών σε αναμονή θα οδηγήσει πάντα να σπαταλούνται τα χρήματα, δεν είστε Amazon, ούτε το Google, δεν μπορούμε να υποθέσουμε με ακρίβεια τη μελλοντική επέκταση μέχρι να έχετε τα σημερινά στοιχεία.


Νομίζω ότι θα βρείτε 1 καλή server είναι εκπληκτικά γρήγορο και μπορεί να χειριστεί πολλούς χρήστες. Λάβετε υπόψη StackOverflow (τελευταία είδα) λειτουργεί μόνο σε 2 servers? ένα web server και ένα διακομιστή βάσης δεδομένων ... αυτό είναι όλο. Αν και δεν έχω χρησιμοποιήσει ένα αντικείμενο flash μέσα σε ένα έντυπο αίτησης παράθυρα εαυτό μου, ξέρω ότι είναι δυνατό. Στο Visual Studio στην εργαλειοθήκη σας, επιλέξτε να προσθέσετε ένα νέο στοιχείο. Στη συνέχεια, το νέο παράθυρο που εμφανίζεται επιλέξτε το **«COM Εξαρτήματα»** καρτέλα για να πάρετε μια λίστα στην οποία μπορείτε να βρείτε το **«Shockwave Flash Object»**


Μόλις προστεθεί στο εργαλειοθήκη, απλά χρησιμοποιήστε το στοιχείο ελέγχου όπως θα χρησιμοποιήσετε οποιοδήποτε άλλο «πρότυπο» ελέγχου από το Visual Studio.


τρεις απλές εντολές είναι διαθέσιμες για να αλληλεπιδρούν με τον έλεγχο:


* AxShockwaveFlash1.Stop ()
* AxShockwaveFlash1.Movie = FilePath & "\ FileName.swf"
* AxShockwaveFlash1.Play ()


το οποίο, νομίζω, είναι όλα αυτονόητα.



> 
> Θα ήταν μεγάλη για να είναι σε θέση να φορτώσετε το περιεχόμενο flash από ένα ρεύμα του είδους και όχι ένα αρχείο στο δίσκο.
> 
> 
> 


Μόλις είδα είστε, επίσης, ψάχνει για ένα μέσο για να φορτώσει το περιεχόμενο από ένα ρεύμα, και επειδή δεν είμαι σίγουρος ότι είναι δυνατόν με το αντικείμενο Shockwave Flash θα σας δώσω μια άλλη επιλογή (δύο στην πραγματικότητα).


η πρώτη είναι αυτή που θα σας συμβούλευα να χρησιμοποιήσετε μόνο όταν είναι απαραίτητο, δεδομένου ότι χρησιμοποιεί την πλήρη άνθηση **«συνιστώσα webbrowser»** (επίσης διαθέσιμο ως ένα επιπλέον στοιχείο εργαλειοθήκη), το οποίο είναι σαν να προσπαθεί να πυροβολήσει μια μύγα με μπαζούκα. Φυσικά αυτό θα λειτουργήσει, όπως ο έλεγχος θα λειτουργήσει ως [ένα παράθυρο πραγματικό του προγράμματος περιήγησης](http://visualbasic.about.com/library/courses/blecvbsbs2202.htm) (στην πραγματικότητα ο Internet Explorer πρόγραμμα περιήγησης), αλλά δεν είναι πραγματικά σημαίνει να χρησιμοποιηθούν με τον τρόπο που το χρειάζεστε.


η δεύτερη επιλογή είναι να χρησιμοποιήσετε κάτι που μόλις ανακάλυψα, ενώ ψάχνει για περισσότερες πληροφορίες σχετικά με την αναπαραγωγή του περιεχομένου flash μέσα σε μια φόρμα παράθυρα. [F-IN-BOX](http://www.f-in-box.com/dotnet/#feature_flv_playing) είναι μια εμπορική λύση που θα παίξει, επίσης, το περιεχόμενο από μια δεδομένη διεύθυνση της ιστοσελίδας. (Ο σύνδεσμος παρέχεται θα σας κατευθύνει στον κώδικα .NET θα πρέπει να χρησιμοποιήσετε). Ρίξτε μια ματιά σε αυτό το site <http://www.systemnetmail.com/>


Θα πρέπει να καλύπτει όλους τους τομείς που σχετίζονται με SMTP που θα πρέπει να χαρτογραφήσει π.χ. ssl, sendusing Η τεχνική που περιγράφεται φαίνεται ωραίο, αλλά έχει πολλές παγίδες:


1) ο χρόνος μεταξύ της έναρξης PHP script και άκρο είναι μικρή σε σύγκριση με το χρόνο μετάδοσης? Επίσης, αυτό σώζει το χρήστη για 0,5 δευτερόλεπτα, σύμφωνα με την πηγή σας. Είναι αυτό ένα σημαντικό χρονικό διάστημα για εσάς;


2) αυτή η τεχνική δεν λειτουργεί με gzip buffering εξόδου


3) αν ξεπλύνετε πάρα πολύ συχνά, θα πρέπει να στείλει ένα σχεδόν άδειο πακέτο στο ίδιο επίπεδο, το οποίο θα μπορούσε πραγματικά να αυξήσει το χρόνο φόρτωσης (για αργή, θορυβώδη συνδέσεις).


4) Μόλις ξεπλύνετε, δεν μπορείτε να στείλετε πια κεφαλίδες


5) (δευτερεύον θέμα) η απόκριση του server θα έρθει στην κατατμημένη κωδικοποίηση, που σημαίνει ότι ο πελάτης δεν θα γνωρίζει το μέγεθος των προτέρων (ως εκ τούτου δεν θα εμφανίσει «x% γίνεται» κατά τη λήψη ενός αρχείου).


Από την άλλη πλευρά, αν περιμένετε το σενάριο σας να τρέχει για ένα τραγικό βαθμό (20+ δευτερόλεπτα), μπορεί να χρειαστεί να στείλει κάποια δεδομένα (χώροι, για παράδειγμα) για να κρατήσει το πρόγραμμα περιήγησης από το χρονοδιάγραμμα από τη σύνδεση. Κάνατε πολύ καλή δουλειά στο να συνοψίσετε τι είναι φοβερό στο Node.js. Η αίσθησή μου είναι ότι το Node.js είναι ιδιαίτερα κατάλληλο για εφαρμογές όπου θα θέλατε να διατηρήσετε μια μόνιμη σύνδεση από το πρόγραμμα περιήγησης πίσω στον διακομιστή. Χρησιμοποιώντας μια τεχνική γνωστή ως ["long-polling"](https://en.wikipedia.org/wiki/Push_technology#Long_polling), μπορείτε να γράψετε μια εφαρμογή που στέλνει ενημερώσεις στον χρήστη σε πραγματικό χρόνο. Η πραγματοποίηση long polling σε πολλούς από τους γίγαντες του διαδικτύου, όπως το [Ruby on Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails) ή το [Django](https://en.wikipedia.org/wiki/Django_%28web_framework%29), θα δημιουργούσε τεράστιο φόρτο στον διακομιστή, επειδή κάθε ενεργός πελάτης τρώει μια διεργασία του διακομιστή. Αυτή η κατάσταση ισοδυναμεί με επίθεση [tarpit](https://en.wikipedia.org/wiki/Tarpit_(networking)). Όταν χρησιμοποιείτε κάτι όπως το Node.js, ο διακομιστής δεν έχει ανάγκη να διατηρεί ξεχωριστά νήματα για κάθε ανοιχτή σύνδεση. 


Αυτό σημαίνει ότι μπορείτε να δημιουργήσετε μια [εφαρμογή συνομιλίας με βάση το πρόγραμμα περιήγησης](https://github.com/rivalslayer/node_chat) σε Node.js που δεν χρειάζεται σχεδόν καθόλου πόρους συστήματος για να εξυπηρετεί πολλούς πελάτες. Κάθε φορά που θέλετε να κάνετε αυτού του είδους τη μακροχρόνια αναζήτηση, το Node.js είναι μια εξαιρετική επιλογή. 


Αξίζει να αναφέρουμε ότι και η Ruby και η Python έχουν εργαλεία για να κάνουν κάτι τέτοιο ([eventmachine](http://rubyeventmachine.com/) και [twisted](https://twistedmatrix.com/trac/), αντίστοιχα), αλλά ότι το Node.js το κάνει εξαιρετικά καλά, και από την αρχή. Η JavaScript είναι εξαιρετικά καλά τοποθετημένη σε ένα μοντέλο ταυτόχρονης λειτουργίας βασισμένο σε callback, και υπερέχει εδώ. Επίσης, η δυνατότητα σειριοποίησης και αποσειριοποίησης με JSON εγγενές τόσο στον πελάτη όσο και στον διακομιστή είναι αρκετά έξυπνη.


Ανυπομονώ να διαβάσω άλλες απαντήσεις εδώ, αυτή είναι μια φανταστική ερώτηση.


Αξίζει να επισημάνουμε ότι το Node.js είναι επίσης εξαιρετικό για καταστάσεις στις οποίες θα επαναχρησιμοποιήσετε πολύ κώδικα σε όλο το χάσμα πελάτη/εξυπηρετητή. Το [Meteor framework](https://meteor.com) το κάνει αυτό πολύ εύκολο, και πολλοί άνθρωποι προτείνουν ότι αυτό μπορεί να είναι το μέλλον της ανάπτυξης ιστοσελίδων. Μπορώ να πω από την εμπειρία μου ότι είναι πολύ διασκεδαστικό να γράφεις κώδικα στο Meteor, και ένα μεγάλο μέρος αυτού είναι να ξοδεύεις λιγότερο χρόνο σκεπτόμενος πώς θα αναδομήσεις τα δεδομένα σου, ώστε ο κώδικας που εκτελείται στο πρόγραμμα περιήγησης να μπορεί εύκολα να τα χειριστεί και να τα μεταβιβάσει πίσω.


Εδώ είναι ένα άρθρο για το Pyramid και το long-polling, το οποίο αποδεικνύεται ότι είναι πολύ εύκολο να ρυθμιστεί με λίγη βοήθεια από το gevent: [*TicTacToe και Long Polling με την Pyramid*](http://michael.merickel.org/2011/6/21/tictactoe-and-long-polling-with-pyramid/). Σε περίπτωση που κάποιος πρέπει να κάνει το ίδιο πράγμα, έχω [ανακαλύψει ότι είναι δυνατόν με τη χρήση Servlets](https://stackoverflow.com/questions/359147/mask-urls-in-jsp) να φιλτράρετε τις διευθύνσεις URL, response.sendRedirect () και request.getRequestDispatcher (). Προς τα εμπρός (). HTML θα είναι η επόμενη καλύτερη επιλογή, μόνο αν θα τους εξυπηρετήσει από ένα δημόσιο web server. Αν προσπαθήσει να το συνδυάσει με την εφαρμογή σας, όλα τα αρχεία (και εικόνες (και φύλλων στυλ (και ...))) θα κάνει CHM μοιάζει με ένα δώρο από τους θεούς.


Τούτου λεχθέντος, όταν στην πραγματικότητα στο πακέτο εγκατάστασης, (αντί να εξυπηρετούνται μέσω του δικτύου), βρήκα τα αρχεία CHM να δουλέψουν καλά.


OTOH, μια άλλη παγίδα για τα αρχεία CHM: Ακόμα και αν προσπαθείτε να ανοίξετε ένα αρχείο CHM σε έναν **τοπικό** δίσκο, μπορείτε να χτύπημα σε μπλοκ ασφαλείας, αν κατεβάσει αρχικά από κάπου, επειδή το αρχείο θα μπορούσε να επισημανθεί ως «προήλθε από εξωτερική πηγή» όταν ελήφθη. Όταν είχα ανάγκη να γράψω μια εφαρμογή με ένα μοντέλο πελάτη-εξυπηρετητή, όπου οι πελάτες θα μπορούσαν να φύγουν και να εισάγετε όποτε θέλουν, (υποθέτω ότι είναι επίσης η περίπτωση για την εφαρμογή σας, όπως εσείς χρησιμοποιείτε φορητές συσκευές) που φρόντισε ώστε οι πελάτες να στείλετε ένα *σε απευθείας σύνδεση* μήνυμα στο διακομιστή, αναφέροντας ότι έχουν συνδεθεί και είναι έτοιμη να κάνει ό, τι χρειάζεται να κάνει.


εκείνη τη στιγμή ο server θα μπορούσε να στείλει μηνύματα πίσω στον πελάτη γούρνα την ίδια ανοικτή σύνδεση.


Επίσης, αλλά δεν ξέρω αν αυτό ισχύει για εσάς, είχα κάποια *αρρυθμία* οι πελάτες που αποστέλλονται στο διακομιστή, αφήνοντας το γνωρίζουν ακόμα ότι ήταν σε απευθείας σύνδεση. Με αυτόν τον τρόπο ο server ξέρει πότε ένας πελάτης ήταν βίαια αποσυνδεθεί από το δίκτυο και θα μπορούσε να σηματοδοτήσει ότι πελάτη πίσω και offline. Όχι, αυτό που κάνετε είναι μια χαρά. Μην αφήσετε αυτούς τους ανθρώπους να σας μπερδέψει.


Εάν έχετε γράψει τις διαδικτυακές υπηρεσίες με .net, στη συνέχεια, τα πληρεξούσια αναφοράς που παράγεται από .net πρόκειται να είναι αρκετά κατάλληλο. Η κατάσταση που περιγράφει (όπου θα είναι και παραγωγός και καταναλωτής) είναι η ιδανική κατάσταση.


Αν χρειαστεί να συνδεθείτε σε υπηρεσίες web που είναι *άγνωστο* κατά τη μεταγλώττιση, τότε θα θέλετε μια πιο δυναμική προσέγγιση, όπου μπορείτε να συναγάγει το «σχήμα» της υπηρεσίας web.


Αλλά ξεκινήστε με τη χρήση της αυτόματης δημιουργείται τάξη μεσολάβησης, και μην ανησυχείτε γι 'αυτό μέχρι να χτυπήσει έναν περιορισμό. Και όταν το κάνεις - επανέλθω σε στοίβα υπερχείλιση ;-)