Рассмотрим следующее:
using System.Net;
using System.Net.Sockets;
// ...
private static void AcceptCallback(IAsyncResult AR) {
Socket socket;
try {
socket = serverSocket.EndAccept(AR);
} catch (ObjectDisposedException) {
return;
}
socketManager.addSocket(socket);
// ...
}
// ...
Где socketManager()
- это объект класса, который я создал для управления сокетами (клиентами). SocketManager
также имеет функцию getSocket()
, которая в основном возвращает сокет на основе идентификатора. Так что, если я позже сделаю что-то вроде этого:
byte[] data = Encoding.ASCII.GetBytes("Some text to send");
socketManager.getSocket(2).Send(data);
Это никогда не отправит клиенту текст для отправки. Это потому, что я копирую socket
, когда делаю socketManager.addSocket(socket);
? Как я могу скопировать Socket
объекты и при этом иметь возможность использовать их правильно и отправлять сообщения?