ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1357
1357
EMPFEHLEN
-
19.12.09 00:33 #1
Hi !
Habe auf der Suche nach meinem Problem diesen Thread gefunden:
http://www.tutorials.de/forum/net-ar...-programm.html
Mich interessiert ob ich das als Basis für ein Programm nehmen kann, welches einen Text (und keine Datei wie im Thread oben) an mehrere Clients (es handelt sich um das gleiche Programm) über das Internet (IPs seien bekannt) senden und von diesen Clients auch empfangen kann?
Oder gibt es dafür noch andere, vllt. bessere Lösungen? Wenn ja, welche wären das? Bin für Beispiele und Links dankbar. Bin noch sehr neu in C#, weiss daher nicht was da am besten wäre und will nicht einen falsch Weg wählen.
Danke für Eure Hilfe.Wenn euch mein Beitrag weiterhilft, bitte bewerten
-
Hi,
Wenn du mehrere Clienten gleichzeitig hast solltest du für jeden einen Thrad verwenden. Schau dir mal dieses Beispiel an. Dort wird eine ArrayList mit allen Clienten angelegt http://msdn.microsoft.com/de-de/library/bb979208.aspx.
Du musst die ServerThread-Klasse nur noch ein wenig erweitern und dann kannst du die ArrayList durchlaufen und an alle Daten verschicken.
Gruß
Erik
-
22.12.09 14:09 #3
Hi!
Der Link macht einen guten Eindruck. Ich lese mich da mal durch und probiere es, ob ich damit weiterkomme.Wenn euch mein Beitrag weiterhilft, bitte bewerten
-
26.12.09 23:00 #4
Hi!
ich habe mittlerweile den Link oben und noch paar andere anschaut zwecks Text versenden und mein Programm startet nun auch als Server mit einem Knopfdruck und kann sich auch mit sich selbst als Client verbinden auf Knopdruck und per IP-Angabe.
Das habe ich mir durch den Process-Explorer visualisieren und validieren lassen
Ich schaffe es nur nicht, jetzt irgendwie Text an das Programm selbst zu senden. Schließlich soll später noch jemand anderes das Programm bekommen. Einer muss dann der Server sein und die anderen kriegen seine IP und der Server schickt den text von jedem an jeden. Und wenn einer mal nicht da ist, dann spielt ein anderer User mit dem Programm halt den Server und so weiter.
Wenn ich jetzt mit NetworkStream clientStream = client.GetStream(); auf den Netzwerkstream zugreifen will steigt mein Programm im Debugmodus einfach aus.. heißt das Programm an sich läuft auch, aber ich kann mit dem Debugger nicht mehr Debuggen.. in Visual C# Express verschwindet die gelbe Zeile :-| . Ich weiss jetzt nicht ob das Programm so funktioniert,also Text sendet oder nicht.
Hoffe mir kann jemand sagen, was das Problem ist.. habe jetzt Stunden damit verbracht und komme nicht darauf..
Habe den interessanten Part als Code mal hier reingesetzt.. sieht viel aus, aber mich interessiert nur warum das Getstream nicht funktioniert bzw. was ich da falsch mache.
Also ich starte das Programm als Server:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
private void button1_Click(object sender, EventArgs e) { // Listener initialisieren und starten try { st = new ServerThread(); Thread th = new Thread(new ThreadStart(st.thread_starten)); th.Start(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Das ist der Thread..der gestartet wird. Interessant ist hier erstmal die While-Schleife.. das funktioniert auch soweit mit der Verbindung herstellen.
Code csharp: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
class ServerThread { // Stop-Flag public bool stop = false; // Flag für "Thread läuft" public bool running = false; TcpListener listener = new TcpListener(IPAddress.Any, 4711); // Listener starten // Die Verbindung zum Client TcpClient tcpClient = null; Thread clientThread; String Hand; bool loop = true; // Der eigentliche Thread public void thread_starten() { try { // Listener starten listener.Start(); while (loop) { TcpClient tcpclient = listener.AcceptTcpClient(); running = true; Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm)); clientThread.Start(tcpclient); } NetworkStream clientStream = tcpClient.GetStream(); ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer = encoder.GetBytes("Hello Client!"); clientStream.Write(buffer, 0, buffer.Length); clientStream.Flush(); } catch (Exception) { } } private void HandleClientComm(object client) { TcpClient tcpClient = (TcpClient)client; NetworkStream clientStream = tcpClient.GetStream(); byte[] message = new byte[4096]; int bytesRead; while (true) { bytesRead = 0; try { //blocks until a client sends a message bytesRead = clientStream.Read(message, 0, 4096); } catch { //a socket error has occured break; } if (bytesRead == 0) { //the client has disconnected from the server break; } //message has successfully been received ASCIIEncoding encoder = new ASCIIEncoding(); System.Diagnostics.Debug.WriteLine(encoder.GetString(message, 0, bytesRead)); } tcpClient.Close(); } }
Die Verbindung stelle ich mit der gleichen Instanz des gleichen Programms her über einen Button dessen Code lautet:
Code csharp: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
try { Server_IP = txt_server_ip.Text; // Client initialisieren und mit dem Server verbinden //TcpClient server = new TcpClient(Server_IP, 4711); // Stream für lesen und schreiben holen IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(Server_IP), 4711); TcpClient client = new TcpClient(serverEndPoint); client.Connect(serverEndPoint); NetworkStream clientStream = client.GetStream(); //Hier steigt der Debugger einfach aus ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer = encoder.GetBytes("Hello Server!"); clientStream.Write(buffer, 0, buffer.Length); clientStream.Flush(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
Hoffe da blickt jemand durch... danke schonmal für eure Hilfe.Wenn euch mein Beitrag weiterhilft, bitte bewerten
Ähnliche Themen
-
CSocket mit threads, mehrere Clients
Von thekiller im Forum C/C++Antworten: 7Letzter Beitrag: 26.02.10, 20:49 -
Text an Prozesse schicken
Von markado im Forum JavaAntworten: 1Letzter Beitrag: 10.09.08, 09:26 -
Socket, mehrere Clients
Von UInt im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 17.08.07, 10:38 -
VPN Netzwerk und mehrere Clients
Von xtratz im Forum NetzwerkeAntworten: 1Letzter Beitrag: 14.10.05, 12:14 -
mehrere Formulare überprüfen & Formular an iframe schicken
Von olivergries im Forum Javascript & AjaxAntworten: 10Letzter Beitrag: 01.04.05, 08:38





Zitieren
Login





