Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


TCP till hundratals enheter

Postades av 2008-03-07 11:54:03 - Rickard Lindgren, i forum systemutveckling generellt, Tråden har 6 Kommentarer och lästs av 1665 personer

Tjipp,
Jag håller på med ett serverprogram(SP) som ska prata TCP/IP med upp till flera hundra enheter så simultant som möjligt. Just nu låter jag SP hämta in alla kommandon som ska skickas ut till respektive enhet, och kör igång en egen tråd som ansluter till enheten och skickar kommandot. När tråden är klar rapporterar den till SP som flaggar status för kommandot i databasen.
Funkar hyfsat nu, men programmet går väldigt tungt vid ca 20 trådar. Enligt vad jag googlat så ska man använda non-blocking sockets, främst för anslutningsbiten, för att kunna få upp prestandan och prata med tusentals enheter. Är det någon som har något exempel på hur detta funkar?
/Rickard


Svara

Sv: TCP till hundratals enheter

Postades av 2008-03-07 12:43:55 - Niklas Jansson

Alternativet till blocking är ju att du pollar (och så finns ju mellanläget att du har en viss timeout).

Det var för länge sen jag höll på med socket-programmering, men ser inte exakt hur det skulle kunna vara bättre om det inte är så att du kan få en hel lista med anslutningar på en gång. Visa gärna en länk till någon av källorna som ger det som tips.

Det framgår inte riktigt vad det är för typ av applikation eller övriga förutsättningar heller; ibland kan man sätta upp flera servrar som samarbetar; det finns olika typer av broadcasting-möjligheter osv.

Utöver det skulle man kunna tänka sig en UDP-lösning ifall problemet tillåter det.


Svara

Sv: TCP till hundratals enheter

Postades av 2008-03-07 13:57:08 - Oskar Johansson

Håller med Niklas, UDP skulle vara en väldigt enkel lösning på problemet; multicast/eller ev. broadcast.

Men, men, jag håller med: du vill nog mest sannolikt köra non-blocking. Exempel är lite svårt att ge mer än som pseudokod då vi inte har en aning om vilket språk du tänkt dig ;)


Svara

Sv:TCP till hundratals enheter

Postades av 2008-03-07 17:33:34 - Rickard Lindgren

Tjipp,
Kul att jag fick två på kroken :) Då ska jag utveckla det hela lite.
UDP är uteslutet, enheterna pratar bara TCP. Kommunikationen går över gprs och det är väl, antar jag, det som gör att det hela går lite långsamt.
Nu har jag ingen länk till nån sida om non-blocking sockets, jag har varit inne på en mängd sidor men inte sparat nån länk. Men tydligen så kör en process i non-blocking-läge vidare direkt när den försökt koppla upp mot enheten, och när uppkopplingen lyckas(eller misslyckas) så får man en callback.
Rubbet är skrivet i VB.Net 2. Så det jag är ute efter är väl egentligen hur alla asynkrona callbacks hänger ihop när man kör non-blocking.


Svara

Sv: TCP till hundratals enheter

Postades av 2008-03-08 01:05:30 - Oskar Johansson

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=80 verkar vara rätt vettig kod (efter snabb sökning på google)

Non-blocking är helt enkelt så att istället för att t.ex. en läsning ifrån nätverket blockerar exekveringen av tråden tills det finns någonting att läsa så fortsätter bara tråden. Det finns inga callbacks (eftersom att callbacks exekveras i egna trådar, vilket förstör lite av idén med non-blocking..) utan man måste hela tiden ligga på och fråga.

Å andra sidan, eftersom att callbacks finns så kan det vara en idé att använda dem, å andra sidan ger dock callbacks fler contextswitches.. I ditt fall tror jag dock inte att det lär vara något större problem, snarare hjälpa. Titta på msdn http://msdn2.microsoft.com/en-us/library/system.net.sockets.socket(VS.71).aspx, speciellt Begin*-metoderna


Svara

Sv:TCP till hundratals enheter

Postades av 2008-04-04 23:43:52 - Rickard Lindgren

Tänkte ni kunde få en liten uppdatering. Efter att ha testkört programmet nu med uppåt 50 samtidiga trådar/anslutningar så verkar det snurra på rätt snabbt faktiskt. Kör med "vanliga" tcp-socketens connect-metod.


Svara

Sv: TCP till hundratals enheter

Postades av 2008-08-02 14:33:22 - Niclas Pehrsson

Vet inte hur din lösning ser ut nu, men under min tid på högskolan så hade vi ett uppdrag att förändra arkitekturen i en programvara, vi valde att bygga om en dc++ hub som var singeltrådad har för mig den hette Verlihub skriven i C++.

Vi var inne på att skapa en tråd per klient, men fick veta av en av våra lärare som doktorerat i nätverksprogrammering (finns säkert ett finare ord). Och det var att man aldrig skall skapa upp trådar dynamiskt efter klienter utan efter arbete.

Säg att vi har en tråd eller flera som håller klienterna och kollar om det finns något på socketen. Om det finns något på socketen skickar vi klienten till en arbetstråd som antingen skapas upp eller hämtas från någon cache. tråden utför arbetet och så vidare.


Svara

Nyligen

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 880
27 965
271 776
941
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies