Несколько клиентов в TCP-сервере (C#)
Привет,
у меня есть TCP-клиент и TCP-сервер, но я хочу, чтобы он был многопоточным. Так кто-нибудь хочет мне помочь?
Что я уже пробовал:
А вот и клиент:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; using System.Net.NetworkInformation; using System.Net; using System.Net.Sockets; using System.IO; using System.Threading; using System.Collections; namespace Spielerinfo_Client { public class Program { static public void Main(string[] Args) { try { while (true) { TcpClient tcpclnt = new TcpClient(); Console.WriteLine("Connecting....."); tcpclnt.Connect("127.0.0.1", 8001); // use the ipaddress as in the server program Console.WriteLine("Connected"); Console.Write("Enter the string to be transmitted : "); String str = Console.ReadLine(); Stream stm = tcpclnt.GetStream(); ASCIIEncoding asen = new ASCIIEncoding(); byte[] ba = asen.GetBytes(str); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Length); byte[] bb = new byte[100]; int k = stm.Read(bb, 0, 100); for (int i = 0; i < k; i++) Console.Write(Convert.ToChar(bb[i])); tcpclnt.Close(); } } catch (Exception e) { Console.WriteLine("Error..... " + e.StackTrace); } } } }
И сервер:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; using System.Net.NetworkInformation; using System.Net; using System.Net.Sockets; using System.IO; using System.Threading; using System.Collections; namespace Spielerinfo_Server { public class Program { public static void Main(string[] args) { try { while (true) { TcpListener myList = new TcpListener(IPAddress.Any, 8001); myList.Start(); Console.WriteLine("The server is running at port 8001..."); Console.WriteLine("The local End point is :" + myList.LocalEndpoint); Console.WriteLine("Waiting for a connection....."); Socket s = myList.AcceptSocket(); Console.WriteLine("Connection accepted from " + s.RemoteEndPoint); byte[] b = new byte[100]; int k = s.Receive(b); Console.WriteLine("Recieved..."); string Command = string.Empty; for (int i = 0; i < k; i++) { Command = Command + Convert.ToChar(b[i]); } Console.WriteLine(Command); ASCIIEncoding asen = new ASCIIEncoding(); s.Send(asen.GetBytes("The string was recieved by the server.")); Console.WriteLine("\nSent Acknowledgement"); s.Close(); myList.Stop(); } } catch (Exception e) { Console.WriteLine("Error..... " + e.StackTrace); } } } }