11. maj 2008 - 17:36Der er
12 kommentarer og 1 løsning
TCP server. problem med at modtage/sende.
Hejsa, jeg sidder og leget lidt med noget netværk haløj. Ikke noget specifikt, men vil gerne lære det.
Det jeg vil lave er en server, som kan have flere clienter på en gang.
Men jeg har haft 2 problemer 1. Flere clienter, har dog løst det med noget multi threat, er det dog den bedste mode?
2. Kan kun sende data til cliente hvis han vil sender noget til serveren først.
Er der en måde jeg kan gøre det lidt OOP på? så f.eks. den kalder en funktion Incomming(something client, string message) når der kommer en besked, og så ellers have en while(1) ved siden af som sende den data til den som skal sendes?
Her er det jeg har pt. Det er sammen sat ud fra hvad jeg kunne finde af guides. Hvis i kende nogle andre gode guides omkring dette må i meget gerne linke til dem
Kode: class Server { private TcpListener tcpListener; private Thread listenThread;
public Server(int port) { Console.WriteLine("Starting server on port: " + port + "..."); this.tcpListener = new TcpListener(IPAddress.Any, port); this.listenThread = new Thread(new ThreadStart(ListenForClients));
while (true) { //blocks until a client has connected to the server TcpClient client = this.tcpListener.AcceptTcpClient(); Console.WriteLine("Got Client, Starting client thread.");
//create a thread to handle communication //with connected client Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm)); clientThread.Start(client); } }
Som sagt så er det bare noget jeg leget med, så det bliver ikke mande den skal understøtte, maks 2-5 clienten :D
Du vælger selv hvilken ende der skal læse først og hvilken der skal skrive først. Hvad mener du med det?
Men det er jo meget simpel, hvis der er en komando der kan fortælle mig om der er noget at læse. Har dog ikke lige kunne finde sådan en. Og den måde det bliver gjort på nu gør jo sådan at thread'en stopper til der er noget at læse, og så der efter sender noget.
Ja men f.eks. hvis den køre en chat og f.eks. nogle andre data'er. Så skal den jo sende Chat data når de kommer ind, og så skal den modatage data når cliente sender en besked.
Og den eneste måde jeg kan se lige pt er at den sende en besked og venter på at modtage en eller omvendt.
Eller også skal clienten konstant requeste chat beskeder, hvilket ville vær spild at bånd brede :D
Tusind tak, har leget lidt med det nu, og tror jeg har lidt styr på hvordan du gør. Hvis du skrive noget som et svar får du nogle point :D så vil jeg bruge resten af natten på at leget med det :D
Syntes du skulle kikke lidt på part II i denne artikel. For lige om lidt skal dine tråde måske accesse komponenter på din form, og det er ikke lige til.
Part I virker ikke optimalt, part 2 er et godt eksempel.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.