Veröffentlicht 23. August 201213 j Ich selbst bin kein Fachinformatiker, sondern Computerlinguist, und um den mangelnden Praxisbezug des Studiums auszugleichen, betreibe ich autodidaktische Studien. Ich habe nun ein Programm in C# geschrieben, das einen Echoserver verwirklichen soll, und dabei habe ich mich strikt an die Vorgaben im Lehrbuch gehalten ("Die .Net-Technologie von W. Beer") - diese besteht aus 2 Klassen, EchoServer.cs und EchoClienst.cs: using System; using System.Text; using System.Net; using System.Net.Sockets; class EchoServer{ Socket s; public bool StartUp(IPAddress ip, int port){ try{ s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //gcc C:\WINDOWS\Microsoft.NET\Framework EchoServer.cs s.Bind(new IPEndPoint(ip, port)); s.Listen(10); }catch(Exception e){ Console.WriteLine(e.Message); return false;} while(true){ Socket newSocket = s.Accept(); Communicate(newSocket); } } void Communicate(Socket clSock){ try{ byte[] buffer = new byte[1024]; while(clSock.Receive(buffer) > 0) clSock.Send(buffer); clSock.Shutdown(SocketShutdown.Both); clSock.Close(); }catch(Exception e){Console.WriteLine(e.Message);} } public static void Main(){ try{ //Verbindung aufnehmen Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect(new IPEndPoint(IPAddress.Loopback, 50000)); //Senden byte[] msg = Encoding.ASCII.GetBytes("Test."); s.Send(msg); //Empfangen byte[] retMsg = new byte[1024]; s.Receive(retMsg); string str = Encoding.ASCII.GetString(retMsg); Console.WriteLine(str); }catch(Exception e){Console.WriteLine(e.Message);} } } using System; using System.Text; using System.Net; using System.Net.Sockets; class EchoClient{ public static void Main(){ try{ //Verbindung Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect(new IPEndPoint(IPAddress.Loopback, 50000)); //Senden byte[] msg = Encoding.ASCII.GetBytes("Test"); s.Send(msg); //Empfangen byte[] retMsg = new byte[1024]; s.Receive(retMsg); string str = Encoding.ASCII.GetString(retMsg); Console.WriteLine(str); }catch(Exception e){ Console.WriteLine(e.Message); } } } Ich habe die beiden Klassen nun kompiliert - aber was ich nun tun soll, darüber steht im Lehrbuch nichts gescheites drin, denn wenn ich in die Eingabeaufforderung EchoServer.exe eingebe und Enter drücke, dann heißt es: "Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte: 127.0.0.1 : 50000", wenn ich EchoClient.exe eingebe, erscheint exakt dasselbe --> Liegt das vielleicht am Virenschutz?
23. August 201213 j Ist da beim Abschreiben etwas schief gelaufen? Die Main-Methoden von Client und Server sind identisch, und die Startup-Methode des Servers wird nirgends benutzt. Der Server sollte jedenfalls nicht Connect benutzen.
24. August 201213 j Autor O wie peinlich. Die Mainmethode des Servers muss lauten: public static void Main(){ EchoServer server = new EchoServer(); if(!server.StartUp(IPAddress.Loopback, 50000)) Console.WriteLine("Konnte nicht gestartet werden."); } jetzt geht es.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.