hallo, hab diesen Quellcode aus einem Tutorial zu meinen Zwecken modifieziert, leider gibts jetzt ein größeres Problem und ich weis nicht warum, woran liegt?
Das ganze ist eine Consolen Anwendung
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144:
| static void Main(string[] args) { Thread start = new Thread(new ThreadStart(ChatServer)); start.Start(); }
private void ChatServer() { clients = new ArrayList(); Thread processor = new Thread(new ThreadStart(StartListening)); processor.Start(); }
private void ServiceClient() { Socket client = clientsocket; bool keepalive = true; while (keepalive) { Byte[] buffer = new Byte[1024]; client.Receive(buffer); string clientcommand = System.Text.Encoding.ASCII.GetString(buffer); string[] tokens = clientcommand.Split(new Char[] { '|' }); Console.WriteLine(clientcommand); if (tokens[0] == "CONN") { for (int n = 0; n < clients.Count; n++) { Client cl = (Client)clients[n]; SendToClient(cl, "JOIN|" + tokens[1]); } EndPoint ep = client.RemoteEndPoint; Client c = new Client(tokens[1], ep, clientservice, client); clients.Add(c); string message = "LIST|" + GetChatterList() + "\r\n"; SendToClient(c, message); } if (tokens[0] == "CHAT") { for (int n = 0; n < clients.Count; n++) { Client cl = (Client)clients[n]; SendToClient(cl, clientcommand); } } if (tokens[0] == "PRIV") { string destclient = tokens[3]; for (int n = 0; n < clients.Count; n++) { Client cl = (Client)clients[n]; if (cl.Name.CompareTo(tokens[3]) == 0) SendToClient(cl, clientcommand); if (cl.Name.CompareTo(tokens[1]) == 0) SendToClient(cl, clientcommand); } } if (tokens[0] == "GONE") { int remove = 0; bool found = false; int c = clients.Count; for (int n = 0; n < c; n++) { Client cl = (Client)clients[n]; SendToClient(cl, clientcommand); if (cl.Name.CompareTo(tokens[1]) == 0) { remove = n; found = true; } } if (found) clients.RemoveAt(remove); client.Close(); keepalive = false; } } }
public class Client { private Thread clthread; private EndPoint endpoint; private string name; private Socket sock; public Client(string _name, EndPoint _endpoint, Thread _thread, Socket _sock) { clthread = _thread; endpoint = _endpoint; name = _name; sock = _sock; } public override string ToString() { return endpoint.ToString() + " : " + name; } public Thread CLThread { get { return clthread; } set { clthread = value; } } public EndPoint Host { get { return endpoint; } set { endpoint = value; } } public string Name { get { return name; } set { name = value; } } public Socket Sock { get { return sock; } set { sock = value; } } }
private void StartListening() { listener = new TcpListener(IPAddress.Any, listenport); listener.Start(); while (true) { try { Socket s = listener.AcceptSocket(); clientsocket = s; clientservice = new Thread(new ThreadStart(ServiceClient)); clientservice.Start(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt