ich habe 2 Programme geschrieben:
Einmal einen Client und dann noch einen Server.
Diese 2 kommunizieren via TCP.
Wenn man den Server startet, lauscht dieser auf Port 60000(TCP) auf einen Clienten. Wenn jetzt ein Kollege von mir den Clienten startet, dann verbindet sich dieser mit dem Server bei mir und sendet 2, 3 Zeilen Text die ich benötige.
Aber wie kann ich es machen, dass wenn sich 2 Clienten gleichzeitig zu meinem Server verbinden, der Server zuerst den ersten Client verarbeitet und dann auf den zweiten geht...
Gibt es hierzu eine Lösung?
Hier der Code:
Quellcode
- Dim bytes(1024) As Byte
- Dim countBytesFromClient As Int32
- Dim server As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)
- Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
- Dim ipAdress As IPAddress = ipHostInfo.AddressList(0)
- Dim localEP As New IPEndPoint(ipAdress, 60000)
- server.Bind(localEP)
- Try
- restart:
- Console.Clear()
- server.Listen(1)
- Console.WriteLine("Waiting for data at port 60000(TCP)...")
- clientSocket = server.Accept()
- Console.Clear()
- Console.WriteLine("Waiting for data at port 60000(TCP)...")
- Console.WriteLine("Connection established!")
- countBytesFromClient = clientSocket.Receive(bytes)
- inv_Name = (Encoding.ASCII.GetString(bytes, 0, countBytesFromClient))[COLOR='SeaGreen'] 'erste Data welche ich benötige[/COLOR]
- Dim answer1() As Byte = Encoding.ASCII.GetBytes("Name_erhalten")
- clientSocket.Send(answer1)
- countBytesFromClient = clientSocket.Receive(bytes)
- Nachricht = (Encoding.ASCII.GetString(bytes, 0, countBytesFromClient))
- Dim answer2() As Byte = Encoding.ASCII.GetBytes("Nachricht_erhalten") [COLOR='SeaGreen']'zweite Data welche ich benötöige.[/COLOR]
- clientSocket.Send(answer2)
- Console.Write("Message from: ")
- Console.ForegroundColor = ConsoleColor.White
- Console.WriteLine(inv_Name)
- Console.ForegroundColor = ConsoleColor.Gray
- Console.Write("Message: ")
- Console.ForegroundColor = ConsoleColor.White
- Console.WriteLine(Nachricht)
- Console.ForegroundColor = ConsoleColor.Gray
- clientSocket.Close()
- GoTo restart [COLOR='SeaGreen'] 'wenn ich dann wieder oben auf restart bin, kann problemlos ein weiterer Client verbinden![/COLOR]
- Catch ex As Exception
- 'Fehlerbehandlung
- End Try
Wie kann ich das Problem mit den 2 Clienten gleichzeitig lösen?
Aber bitte lasst mich nicht den kompletten Code neuschreiben.
Achja: Das ist meine erste TCP Anwendung, die ich soweit ohne Forenhilfe aufgestellt habe. (Hilfe war ein PDF von Galileo Computing)
Habe im Code alles "Nicht Wichtige" der Übersicht zuliebe herausgelöscht...
Danke für euer Bemühen!
mfg fox(fux)