Lorsque je souhaite recevoir des datagrammes UDP de manière asynchrone, j'écris l'appel BeginReceiveFrom d'une classe System.Net.Sockets.Socket. La méthode BeginReceiveFrom attend un point de terminaison en tant que paramètre remoteEP.Obtention d'un point de terminaison distant pour une réception asynchrone
public IAsyncResult BeginReceiveFrom (
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
ref EndPoint remoteEP,
AsyncCallback callback,
Object state
)
Cette méthode commence asynchrone recevoir et ne peut retourner aucun résultat en remoteEP car elle retourne immédiatement. Ce paramètre correspond-il à un type de filtrage ou sera-t-il modifié à la fin de la réception?
Dans le gestionnaire de réception j'appelle EndReceiveFrom, où je dois également passer une référence à un objet Enpoint en tant que paramètre endPoint. Le EndReceiveFrom indique avec cet objet Endpoint l'expéditeur de la trame UDP. Pourquoi dois-je passer un remoteEP au BeginReceiveFrom et puis-je éviter cela?
Alors, quel est le paramètre remoteEP dans BeginReceiveFrom for? Pourquoi est-ce que je crée un IPEndPoint qui est ignoré de toute façon? – harper
Je n'ai pas de documentation pour fournir une réponse définitive à votre question, peut-être que quelqu'un d'autre le fait. Je suppose que cela a à voir avec la liaison aux interfaces réseau, la sécurité et la convention. Souvent, les applications envoient des données bidirectionnellement, il est donc logique de savoir d'où proviennent les données. Vous aurez probablement plus d'un client ainsi une séparation des données et peut-être même une commande de paquets pourrait être nécessaire (sous-ensembles de la fonctionnalité TCP). Je ne crois pas avoir besoin d'informations sur les clients est plus l'exception à la règle. Il est donc logique de remplir le EndPoint par défaut. –