[C#]Socket编程,客户端接口
[C#]Socket programming, Client interface
我有一个正在运行的 Client/Server 多线程程序。
我的问题是,我如何 select 任何客户端并从服务器向他发送数据包?
我通常做的是创建一个包含 Socket
的 Client
class,当有新的传入连接时,我创建一个新的客户端并给他当前服务器实例 (this
) 并定义客户端套接字。
客户class:
public class Client
{
public int Id;
public Socket socket;
public Server serverInstance;
public Client(Server server, Socket sock)
{
this.Id = GenerateNewUniqueId(); // Generates a unique id (you must implement it :p)
this.serverInstance = server;
this.socket = sock;
}
}
服务器接受连接:
List<Client> clients = new List<Client>();
// incoming connection
void AcceptConnection()
{
Client newClient = new Client(this, serverSocket.Accept());
clients.Add(newClient);
}
因此,如果您想发送给一个或所有客户,您可以这样做:
public void SendPacketToAll()
{
foreach (Client client in this.clients)
client.socket.Send(...);
}
public void SendPacketToUserById(int id)
{
foreach (Client client in this.clients)
if (client.Id == id)
client.socket.Send(...);
}
希望对你有帮助,祝你好运
我有一个正在运行的 Client/Server 多线程程序。 我的问题是,我如何 select 任何客户端并从服务器向他发送数据包?
我通常做的是创建一个包含 Socket
的 Client
class,当有新的传入连接时,我创建一个新的客户端并给他当前服务器实例 (this
) 并定义客户端套接字。
客户class:
public class Client
{
public int Id;
public Socket socket;
public Server serverInstance;
public Client(Server server, Socket sock)
{
this.Id = GenerateNewUniqueId(); // Generates a unique id (you must implement it :p)
this.serverInstance = server;
this.socket = sock;
}
}
服务器接受连接:
List<Client> clients = new List<Client>();
// incoming connection
void AcceptConnection()
{
Client newClient = new Client(this, serverSocket.Accept());
clients.Add(newClient);
}
因此,如果您想发送给一个或所有客户,您可以这样做:
public void SendPacketToAll()
{
foreach (Client client in this.clients)
client.socket.Send(...);
}
public void SendPacketToUserById(int id)
{
foreach (Client client in this.clients)
if (client.Id == id)
client.socket.Send(...);
}
希望对你有帮助,祝你好运