Entwickler-Ecke
Verteilte Systeme - TCP Listener kann keine verbindung aufbauen
nut2 - So 08.06.08 21:51
Titel: TCP Listener kann keine verbindung aufbauen
Ich habe vor ein Consolen Chat Programm zuschreiben, dazu hab einen vorhanden Quellcode modifizert
dier Listener nimmt die eingehenden Verbindungen ann und dann wird jede Client in einem eigenen Thread verwaltet
leider bekomme ich keine verbing zum Listener;
Hab nicht die geringste Ahnung woran es liegen kann ( firewall ist aus);
Client Seite:
C#-Quelltext
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:
| private bool connected = false; private string clientname1; private int serverport=45678; private NetworkStream ns; private StreamReader sr; private TcpClient clientsocket; private Thread receive = null; private string serveraddress="127.0.0.1";
static void Main(string[] args) { SharKet neueInstanz1 = new SharKet(); neueInstanz1.EstablishConnection(); ; SharKet neueInstanz2 = new SharKet(); neueInstanz2.RegisterWithServer(); SharKet neueInstanz3 = new SharKet(); neueInstanz3.ReceiveChat(); }
private void EstablishConnection() { Console.WriteLine("Connecting to Server"); try { clientsocket = new TcpClient(serveraddress, serverport); ns = clientsocket.GetStream(); sr = new StreamReader(ns); connected = true;
} catch (Exception ) {
Console.WriteLine("Could not connect to Server Error");
Console.WriteLine("Disconnected"); } }
private void RegisterWithServer() { if (connected==true) { try { Console.WriteLine("Name Eingeben"); string clientname = Console.ReadLine(); clientname1 = clientname; string command = "CONN|" + clientname; Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length); string serverresponse = sr.ReadLine(); serverresponse.Trim(); string[] tokens = serverresponse.Split(new Char[] { '|' }); if (tokens[0] == "LIST") { Console.WriteLine("Connected"); } for (int n = 1; n < tokens.Length - 1; n++) Console.WriteLine(tokens[n].Trim(new char[] { '\r', '\n' })); Console.WriteLine(clientname + ": Connected to Chat Server"); } catch (Exception) { Console.WriteLine("Error Registering");
} } else { Console.WriteLine("Keine verbindung zum Server"); } } |
Server seitig:
C#-Quelltext
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:
| [list=1][*] private int listenport = 45678; private TcpListener listener;
private ArrayList clients; private Socket clientsocket; private Thread clientservice;
static void Main(string[] args) { SharKet neuInstanz = new SharKet(); neuInstanz.ChatServer(); }
private void ChatServer() { clients = new ArrayList(); Thread processor = new Thread(new ThreadStart(StartListening)); processor.Start(); }
private void StartListening() { listener = new TcpListener(IPAddress.Any, listenport); listener.Start(); Console.WriteLine("Servergestarted"); while (true) { try { Socket s = listener.AcceptSocket(); clientsocket = s; clientservice = new Thread(new ThreadStart(ServiceClient)); clientservice.Start(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } } 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); } |
Moderiert von
Christian S.: Topic aus Netzwerk verschoben am So 08.06.2008 um 22:00
nut2 - Mo 09.06.08 22:34
Hab den Fehler in de Zwischenzeit gefunden
Christian S. - Mo 09.06.08 22:56
Dann sag doch bitte auch, wo er lag.
nut2 - Mi 11.06.08 23:47
Da ich Registerwithserver und RecieveChat nach einander aufgerufen habe anstatt am ende der vorhergehen funktion
war die Verbindung zum server bereits wieder geschlossen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!