Autor Wątek: Jak zaprojektowac aplikacje serwerowe dla gry online.  (Przeczytany 13793 razy)

dummy

  • Gość
# Sierpień 15, 2006, 09:10:42
Apache uzywa "pre-fork'a", czyli jak napisales ma pare watkow i na kazdym z nich po "kilka" ludzi podpietych na poll/select, co daje mu przewage taka ze jest przenoszony miedzy systemami, ale za to "wolny" i problem z c10k nadal pozostaje, a przepisanie caleg kodu zajelo by wiecznosc ; p, i generalnie musial by byc napisany od 0.

A kod jaki chcesz napisac bedzie w C#, bo autor ... w takowym pisze o ile mnie pamiec nie myli ? ; p

prefork też jest jako dodatkowy moduł. Maksymalna liczba połączeń na proces i tak jest na sztywno ograniczona. Jednym z wyjść jest napisanie czegoś na wzór TCP, które jest oparte na UDP (dochodzi "tylko" kontrola poprawności transmiji oraz automatyczne wyliczanie max. przepustowości łącza i konwersja strumień<->datagram ;))

// Edit
Znalazłem jeszcze to :)

http://www.kegel.com/c10k.html
« Ostatnia zmiana: Sierpień 15, 2006, 09:30:18 wysłana przez agent_J »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline skiter

  • Użytkownik

# Sierpień 15, 2006, 10:24:00
No ... spora roznica z tym "tylko":

Naglowek UDP:

struct udphdr {
unsigned short source; ( Source Port )
unsigned short dest; ( Destination Port )
unsigned short len; ( Lenght )
unsigned short check; ( Checksum )
};

Naglowek TCP

typedef struct tcphdr {

        unsigned short sport;                        // Source port
        unsigned short dport;                        // Destination port
        unsigned int   seq;                        // Sequence number
        unsigned int   ack_seq;                        // Acknowledgement number
        unsigned char  lenres;                        // Length return size
        unsigned char  flags;                        // Flags and header length
        unsigned short window;                        // Window size
        unsigned short checksum;                // Packet Checksum
        unsigned short urg_ptr;                        // Urgent Pointer

} TCPHEADER;
Dane pochdza z:

Udp:
http://rainbow.mimuw.edu.pl/SO/Linux/Temat08/UDP.html#NAGLOWEK

Tcp:
http://www.cc-team.org/index.php?name=artykuly&show=172

A to "c10k", sprowadza do systemu *nix, gdzie jemu daleko do Windows, a z tego co sobie przypominam ma to byc w C# i Windows ; )

dummy

  • Gość
# Sierpień 15, 2006, 12:03:04