套接字编程,客户端接口



我有一个正在工作的客户端/服务器多线程程序。我的问题是,我如何选择任何客户端,并从服务器向他发送数据包?

我通常做的是创建一个包含SocketClient类,当有一个新的传入连接时,我创建一个新的客户端,并给他当前的服务器实例(this)并定义客户端套接字。

客户机类:

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(...);
}

希望有帮助,祝你好运

最新更新