Hallo zusammen,
ich war mal entschlossen einen TCPServer aufzusetzen. Problem nur ich hab kaum ahnung von dem Thema
Belesen hab ich mich zumal hier im Forum ("TuT") nur hat mir das nicht viel geholfen um das Thema zu verstehen
Weiter hab ich mich Hier schlau gemacht weiter Hier nur nützt das einen nicht, wenn er es immer noch nicht verstanden hat.
Somit habe ich mich an dem TUT lang geangelt und hab nun das, dazu muss ich sagen, wahrscheinlich nicht die beste Methode.
#ConsolenApplication
Frage ist nun, wie kann ich es verbessern bzw. wie kann ich jetzt den Benutzern jetzt eine eindeutige id geben Oo?
#Wahrscheinlich_bad_practice
Implentierung
ich war mal entschlossen einen TCPServer aufzusetzen. Problem nur ich hab kaum ahnung von dem Thema
Belesen hab ich mich zumal hier im Forum ("TuT") nur hat mir das nicht viel geholfen um das Thema zu verstehen
Weiter hab ich mich Hier schlau gemacht weiter Hier nur nützt das einen nicht, wenn er es immer noch nicht verstanden hat.
Somit habe ich mich an dem TUT lang geangelt und hab nun das, dazu muss ich sagen, wahrscheinlich nicht die beste Methode.
#ConsolenApplication
Frage ist nun, wie kann ich es verbessern bzw. wie kann ich jetzt den Benutzern jetzt eine eindeutige id geben Oo?
#Wahrscheinlich_bad_practice
Implentierung
C#-Quellcode
C#-Quellcode
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading.Tasks;
- namespace ServerManager
- {
- public class ServerTcpIp
- {
- private List<ClienManager> clients;
- private TcpListener server;
- private IPEndPoint ipendpoint;
- public event ClientMessage GetMessageFromClient;
- public delegate void ClientMessage(TcpClient e ,string Message);
- public ServerTcpIp(IPAddress adress,int port)
- {
- clients = new List<ClienManager>();
- ipendpoint = new IPEndPoint(adress, port);
- }
- private void Start()
- {
- Task.Run(() => StartServer()).Start();
- void StartServer()
- {
- server = new TcpListener(ipendpoint);
- server.Start();
- while (true)
- {
- TcpClient client = server.AcceptTcpClient();
- ClienManager cm = new ClienManager(client);
- cm.SendToServerMsg += ReadClientMessage;
- clients.Add(cm);
- void ReadClientMessage(TcpClient e,string msg){
- GetMessageFromClient(e, msg);
- }
- }
- }
- }
- protected class ClienManager
- {
- private StreamWriter StreamWriter;
- private StreamReader StreamReader;
- private TcpClient Client;
- public delegate void SendMessageToServer(TcpClient e, string msg);
- public event SendMessageToServer SendToServerMsg;
- public ClienManager(TcpClient client)
- {
- Client = client;
- NetworkStream ns = Client.GetStream();
- StreamWriter = new StreamWriter(ns);
- StreamReader = new StreamReader(ns);
- Task.Run(() => ReadMessage()).Start();
- void ReadMessage()
- {
- while (true)
- {
- string msg = StreamReader.ReadToEnd();
- SendToServerMsg(Client, msg);
- }
- }
- }
- private async void SendMessageAsync(string Message)
- {
- await StreamWriter.WriteAsync(Message);
- }
- }
- }
- }