Как вызвать существующий класс с параметрами?C#

Место общения программистов C#
Anonymous
Как вызвать существующий класс с параметрами?

Сообщение Anonymous »

У меня есть класс под названием «Клиенты» на моем многопоточном сервере.
Мой вопрос: как отправить данные указанному клиенту из другого класса?
Вот моя функция прослушивания из класса ServerMain.

Код: Выделить всё

    public static List clients;
public static List threads;
private void Listen()
{
clients = new List();
threads = new List();

int id = 0;
while (true)
{
listenerSocket.Listen(0);
Log.Status(" Waiting for a connection...");
var commands = new ServerCommands();
//commands.Wait();
Client c1 = new Client(id, listenerSocket.Accept());
clients.Add(c1);
Log.Status("New Client Connected!");

Thread t = new Thread(c1.Start);
c1.SetThread = t;
t.Start();
id++;
}
}
И мой клиентский класс с одним примером отправки

Код: Выделить всё

public class Client : IDisposable
{
public int _id;
public string _guid;
public string Name;

public Socket clientSocket;
private Thread thread;

public Client(int id, Socket socket)
{
this._id = id;
this._guid = Guid.NewGuid().ToString();
this.clientSocket = socket;
}

public Thread SetThread
{
set
{
this.thread = value;
}
}

public int Id
{
get
{
return this._id;
}
}

public void Receive()
{
byte[] buffer;
int readBytes;

while (clientSocket != null && clientSocket.Connected)
{
try
{
buffer = new byte[clientSocket.SendBufferSize];
readBytes = clientSocket.Receive(buffer);

if (readBytes > 0)
{
Packet p = new Packet(buffer);

if (p.Type != PacketType.Disconnect)
{
new Task(() => Received(p)).Start();
}
else
{
CloseConnection();
}
}
}
catch (SocketException e)
{
Console.WriteLine(e);
CloseConnection();
}
}
}

////////// Example Send Function    ////////////
private void Register(User user)
{
var res = Handler.RegisterDo(user);
clientSocket.Send(res.ToBytes());
}
}
Я знаю, что могу отправлять подобные сообщения всем подключенным клиентам

Код: Выделить всё

        foreach(Client item in ServerMain.clients) //Client clients
{
Console.WriteLine(item._id);
Console.WriteLine(item.Name);
Console.WriteLine(item._guid);

};
Я что-то упустил, чтобы идентифицировать?
Идентификатор мог бы это сделать (я думаю), но как мне тогда его вызвать извне?

Подробнее здесь: https://stackoverflow.com/questions/406 ... parameters

Вернуться в «C#»