Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Socket, classe

Implémente l'interface de sockets Berkeley.

System.Object
  System.Net.Sockets.Socket

Espace de noms :  System.Net.Sockets
Assembly :  System (dans System.dll)
public class Socket : IDisposable

Le type Socket expose les membres suivants.

  NomDescription
Méthode publiqueSocket(SocketInformation)Initialise une nouvelle instance de la classe Socket avec la valeur spécifiée retournée par DuplicateAndClose.
Méthode publiqueSocket(SocketType, ProtocolType)Initialise une nouvelle instance de la classe Socket à l'aide du type de socket et du protocole spécifiés.
Méthode publiqueSocket(AddressFamily, SocketType, ProtocolType)Initialise une nouvelle instance de la classe Socket en utilisant la famille d'adresses, le type de socket et le protocole spécifiés.
Début
  NomDescription
Propriété publiqueAddressFamilyObtient la famille d'adresses de Socket.
Propriété publiqueAvailableObtient la quantité de données reçues du réseau et disponibles pour la lecture.
Propriété publiqueBlockingObtient ou définit une valeur qui indique si Socket est en mode blocage.
Propriété publiqueConnectedObtient une valeur qui indique si Socket est connecté à un hôte distant depuis la dernière opération Send ou Receive.
Propriété publiqueDontFragmentObtient ou définit une valeur Boolean qui spécifie si Socket autorise la fragmentation des datagrammes IP (Internet Protocol).
Propriété publiqueDualModeObtient ou définit une valeur d' Boolean qui spécifie si Socket est un socket double mode utilisé pour l'IPv4 IPv6 et l'.
Propriété publiqueEnableBroadcastObtient ou définit une valeur Boolean qui spécifie si Socket peut envoyer ou recevoir des paquets de diffusion.
Propriété publiqueExclusiveAddressUseObtient ou définit une valeur Boolean qui spécifie si Socket n'autorise qu'un seul processus à se lier à un port.
Propriété publiqueHandleObtient le handle du système d'exploitation pour Socket.
Propriété publiqueIsBoundObtient une valeur qui indique si Socket est lié à un port local spécifique.
Propriété publiqueLingerStateObtient ou définit une valeur qui spécifie si Socket doit différer la fermeture d'un socket lors d'une tentative d'envoi de l'ensemble des données en attente.
Propriété publiqueLocalEndPointObtient le point de terminaison local.
Propriété publiqueMulticastLoopbackObtient ou définit une valeur spécifiant si les paquets multicast sortants sont remis à l'application émettrice.
Propriété publiqueNoDelayObtient ou définit une valeur Boolean spécifiant si le flux de données Socket utilise l'algorithme Nagle.
Propriété publiqueMembre statiqueOSSupportsIPv4Indique si le système d'exploitation et les cartes réseau sous-jacents prennent en charge le protocole IPv4 (Internet Protocol version 4).
Propriété publiqueMembre statiqueOSSupportsIPv6Indique si le système d'exploitation et les cartes réseau sous-jacents prennent en charge le protocole IPv6 (Internet Protocol version 6).
Propriété publiqueProtocolTypeObtient le type de protocole de Socket.
Propriété publiqueReceiveBufferSizeObtient ou définit une valeur spécifiant la taille de la mémoire tampon de réception de Socket.
Propriété publiqueReceiveTimeoutObtient ou définit une valeur spécifiant la durée après laquelle un appel Receive synchrone doit expirer.
Propriété publiqueRemoteEndPointObtient le point de terminaison distant.
Propriété publiqueSendBufferSizeObtient ou définit une valeur spécifiant la taille de la mémoire tampon d'envoi de Socket.
Propriété publiqueSendTimeoutObtient ou définit une valeur spécifiant la durée après laquelle un appel Send synchrone doit expirer.
Propriété publiqueSocketTypeObtient le type de Socket.
Propriété publiqueMembre statiqueSupportsIPv4 Obsolète. Obtient une valeur indiquant si la prise en charge d'IPv4 est disponible et active sur l'hôte en cours.
Propriété publiqueMembre statiqueSupportsIPv6 Obsolète. Obtient une valeur qui indique si le Framework prend en charge le protocole IPv6 pour certains membres Dns obsolètes.
Propriété publiqueTtlObtient ou définit une valeur qui spécifie la durée de vie des paquets IP (Internet Protocol) envoyés par Socket.
Propriété publiqueUseOnlyOverlappedIOSpécifie si le socket doit utiliser uniquement le mode d'E/S avec chevauchement.
Début
  NomDescription
Méthode publiqueAcceptCrée un nouveau Socket pour une connexion nouvellement créée.
Méthode publiqueAcceptAsyncDémarre une opération asynchrone pour accepter une tentative de connexion entrante.
Méthode publiqueBeginAccept(AsyncCallback, Object)Démarre une opération asynchrone pour accepter une tentative de connexion entrante.
Méthode publiqueBeginAccept(Int32, AsyncCallback, Object)Lance une opération asynchrone d'acceptation d'une tentative de connexion entrante et reçoit le premier bloc de données envoyé par l'application cliente.
Méthode publiqueBeginAccept(Socket, Int32, AsyncCallback, Object)Lance une opération asynchrone d'acceptation d'une tentative de connexion entrante provenant d'un socket spécifié et reçoit le premier bloc de données envoyé par l'application cliente.
Méthode publiqueBeginConnect(EndPoint, AsyncCallback, Object)Démarre une demande asynchrone pour une connexion d'hôte distant.
Méthode publiqueBeginConnect(IPAddress, Int32, AsyncCallback, Object)Démarre une demande asynchrone pour une connexion d'hôte distant. L'hôte est spécifié par IPAddress et un numéro de port.
Méthode publiqueBeginConnect(IPAddress[], Int32, AsyncCallback, Object)Démarre une demande asynchrone pour une connexion d'hôte distant. L'hôte est spécifié par un tableau IPAddress et un numéro de port.
Méthode publiqueBeginConnect(String, Int32, AsyncCallback, Object)Démarre une demande asynchrone pour une connexion d'hôte distant. L'hôte est spécifié par un nom d'hôte et un numéro de port.
Méthode publiqueBeginDisconnectLance une demande asynchrone de déconnexion d'un point de terminaison distant.
Méthode publiqueBeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)Démarre la réception asynchrone de données à partir d'un Socket connecté.
Méthode publiqueBeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)Démarre la réception asynchrone de données à partir d'un Socket connecté.
Méthode publiqueBeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)Démarre la réception asynchrone de données à partir d'un Socket connecté.
Méthode publiqueBeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)Démarre la réception asynchrone de données à partir d'un Socket connecté.
Méthode publiqueBeginReceiveFromDémarre la réception asynchrone de données à partir d'un périphérique réseau spécifié.
Méthode publiqueBeginReceiveMessageFromDémarre la réception asynchrone du nombre spécifié d'octets de données dans l'emplacement spécifié de la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison ainsi que les informations sur le paquet.
Méthode publiqueBeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)Envoie des données de façon asynchrone à un Socket connecté.
Méthode publiqueBeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)Envoie des données de façon asynchrone à un Socket connecté.
Méthode publiqueBeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)Envoie des données de façon asynchrone à un Socket connecté.
Méthode publiqueBeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)Envoie des données de façon asynchrone à un Socket connecté.
Méthode publiqueBeginSendFile(String, AsyncCallback, Object)Envoie le fichier fileName à un objet Socket connecté à l'aide de l'indicateur UseDefaultWorkerThread.
Méthode publiqueBeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)Envoie de façon asynchrone un fichier et des mémoires tampon de données à un objet Socket connecté.
Méthode publiqueBeginSendToEnvoie des données de façon asynchrone à un hôte distant spécifique.
Méthode publiqueBindAssocie Socket à un point de terminaison local.
Méthode publiqueMembre statiqueCancelConnectAsyncAnnule une requête asynchrone pour une connexion d'hôte distant.
Méthode publiqueClose()Ferme la connexion Socket et libère toutes les ressources associées.
Méthode publiqueClose(Int32)Ferme la connexion Socket et libère toutes les ressources associées avec un délai d'attente spécifié pour permettre l'envoi des données en file d'attente.
Méthode publiqueConnect(EndPoint)Établit une connexion à un hôte distant.
Méthode publiqueConnect(IPAddress, Int32)Établit une connexion à un hôte distant. L'hôte est spécifié par une adresse IP et un numéro de port.
Méthode publiqueConnect(IPAddress[], Int32)Établit une connexion à un hôte distant. L'hôte est spécifié par un tableau d'adresses IP et un numéro de port.
Méthode publiqueConnect(String, Int32)Établit une connexion à un hôte distant. L'hôte est spécifié par un nom d'hôte et un numéro de port.
Méthode publiqueConnectAsync(SocketAsyncEventArgs)Démarre une demande asynchrone pour une connexion à un hôte distant.
Méthode publiqueMembre statiqueConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)Démarre une demande asynchrone pour une connexion à un hôte distant.
Méthode publiqueDisconnectFerme la connexion de socket et autorise la réutilisation du socket.
Méthode publiqueDisconnectAsyncLance une demande asynchrone de déconnexion d'un point de terminaison distant.
Méthode publiqueDispose()Libère toutes les ressources utilisées par l'instance actuelle de la classe Socket.
Méthode protégéeDispose(Boolean)Libère les ressources non managées utilisées par Socket et supprime éventuellement les ressources managées.
Méthode publiqueDuplicateAndCloseDuplique la référence de socket pour le processus cible et ferme le socket pour ce processus.
Méthode publiqueEndAccept(IAsyncResult)Accepte de manière asynchrone une tentative de connexion entrante et crée un nouveau Socket pour gérer les communications de l'hôte distant.
Méthode publiqueEndAccept(Byte[], IAsyncResult)Accepte de manière asynchrone une tentative de connexion entrante et crée un nouvel objet Socket pour gérer les communications de l'hôte distant. Cette méthode retourne une mémoire tampon qui contient les données initiales transférées.
Méthode publiqueEndAccept(Byte[], Int32, IAsyncResult)Accepte de manière asynchrone une tentative de connexion entrante et crée un nouvel objet Socket pour gérer les communications de l'hôte distant. Cette méthode retourne une mémoire tampon qui contient les données initiales et le nombre d'octets transférés.
Méthode publiqueEndConnectMet fin à une demande de connexion asynchrone en attente.
Méthode publiqueEndDisconnectMet fin à une demande de déconnexion asynchrone en attente.
Méthode publiqueEndReceive(IAsyncResult)Met fin à une lecture asynchrone en attente.
Méthode publiqueEndReceive(IAsyncResult, SocketError)Met fin à une lecture asynchrone en attente.
Méthode publiqueEndReceiveFromMet fin à une lecture asynchrone en attente à partir d'un point de terminaison spécifique.
Méthode publiqueEndReceiveMessageFromMet fin à une lecture asynchrone en attente à partir d'un point de terminaison spécifique. Cette méthode révèle également davantage d'informations sur le paquet que EndReceiveFrom.
Méthode publiqueEndSend(IAsyncResult)Met fin à un envoi asynchrone en attente.
Méthode publiqueEndSend(IAsyncResult, SocketError)Met fin à un envoi asynchrone en attente.
Méthode publiqueEndSendFileMet fin à un envoi asynchrone en attente d'un fichier.
Méthode publiqueEndSendToMet fin à un envoi asynchrone en attente vers un emplacement spécifique.
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalizeLibère les ressources utilisées par la classe Socket. (Substitue Object.Finalize().)
Méthode publiqueGetHashCodeSert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publiqueGetSocketOption(SocketOptionLevel, SocketOptionName)Retourne la valeur d'une option Socket spécifiée, représentée sous la forme d'un objet.
Méthode publiqueGetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])Retourne la valeur de l'option Socket spécifiée sous la forme d'un tableau d'octets.
Méthode publiqueGetSocketOption(SocketOptionLevel, SocketOptionName, Int32)Retourne la valeur de l'option Socket spécifiée dans un tableau.
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueIOControl(Int32, Byte[], Byte[])Définit les modes de fonctionnement de bas niveau de Socket à l'aide de codes de contrôle numériques.
Méthode publiqueIOControl(IOControlCode, Byte[], Byte[])Définit les modes de fonctionnement de bas niveau de Socket à l'aide de l'énumération IOControlCode afin de spécifier les codes de contrôle.
Méthode publiqueListenMet Socket dans un état d'écoute.
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiquePollDétermine l'état de Socket.
Méthode publiqueReceive(IList<ArraySegment<Byte>>)Reçoit les données d'un Socket lié dans la liste des mémoires tampon de réception.
Méthode publiqueReceive(Byte[])Reçoit les données d'un Socket lié dans une mémoire tampon de réception.
Méthode publiqueReceive(IList<ArraySegment<Byte>>, SocketFlags)Reçoit les données d'un Socket lié dans la liste des mémoires tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceive(Byte[], SocketFlags)Reçoit les données d'un Socket lié dans une mémoire tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)Reçoit les données d'un Socket lié dans la liste des mémoires tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceive(Byte[], Int32, SocketFlags)Reçoit le nombre spécifié d'octets de données d'un Socket lié dans une mémoire tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceive(Byte[], Int32, Int32, SocketFlags)Reçoit le nombre spécifié d'octets d'un Socket lié dans la position d'offset spécifiée de la mémoire tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceive(Byte[], Int32, Int32, SocketFlags, SocketError)Reçoit les données d'un Socket lié dans une mémoire tampon de réception, à l'aide du SocketFlags spécifié.
Méthode publiqueReceiveAsyncDémarre une demande asynchrone pour recevoir les données d'un objet Socket connecté.
Méthode publiqueReceiveFrom(Byte[], EndPoint)Reçoit un datagramme dans la mémoire tampon de données et stocke le point de terminaison.
Méthode publiqueReceiveFrom(Byte[], SocketFlags, EndPoint)Reçoit un datagramme dans la mémoire tampon de données à l'aide du SocketFlags spécifié et stocke le point de terminaison.
Méthode publiqueReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)Reçoit le nombre spécifié d'octets dans la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison.
Méthode publiqueReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)Reçoit le nombre spécifié d'octets de données dans l'emplacement spécifié de la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison.
Méthode publiqueReceiveFromAsyncDémarre la réception asynchrone de données à partir d'un périphérique réseau spécifié.
Méthode publiqueReceiveMessageFromReçoit le nombre spécifié d'octets de données dans l'emplacement spécifié de la mémoire tampon de données, à l'aide du SocketFlags spécifié et stocke le point de terminaison ainsi que les informations sur le paquet.
Méthode publiqueReceiveMessageFromAsyncDémarre la réception asynchrone du nombre spécifié d'octets de données dans l'emplacement spécifié de la mémoire tampon de données, à l'aide du SocketAsyncEventArgs.SocketFlags spécifié et stocke le point de terminaison ainsi que les informations sur le paquet.
Méthode publiqueMembre statiqueSelectDétermine l'état d'un socket ou de plusieurs sockets.
Méthode publiqueSend(IList<ArraySegment<Byte>>)Envoie le jeu de mémoires tampon dans la liste à un Socket connecté.
Méthode publiqueSend(Byte[])Envoie des données à un Socket connecté.
Méthode publiqueSend(IList<ArraySegment<Byte>>, SocketFlags)Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié.
Méthode publiqueSend(Byte[], SocketFlags)Envoie des données à un Socket connecté à l'aide du SocketFlags spécifié.
Méthode publiqueSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError)Envoie le jeu de mémoires tampon dans la liste à un Socket connecté, à l'aide du SocketFlags spécifié.
Méthode publiqueSend(Byte[], Int32, SocketFlags)Reçoit le nombre spécifié d'octets de données à un Socket connecté, à l'aide du SocketFlags spécifié.
Méthode publiqueSend(Byte[], Int32, Int32, SocketFlags)Envoie le nombre spécifié d'octets de données d'un Socket connecté, en démarrant à l'offset spécifié et en utilisant le SocketFlags spécifié.
Méthode publiqueSend(Byte[], Int32, Int32, SocketFlags, SocketError)Envoie le nombre spécifié d'octets de données d'un Socket connecté, en démarrant à l'offset spécifié et en utilisant le SocketFlags spécifié
Méthode publiqueSendAsyncEnvoie des données de façon asynchrone à un objet Socket connecté.
Méthode publiqueSendFile(String)Envoie le fichier fileName à un objet Socket connecté avec l'indicateur de transmission UseDefaultWorkerThread.
Méthode publiqueSendFile(String, Byte[], Byte[], TransmitFileOptions)Envoie le fichier fileName et des mémoires tampon de données à un objet Socket connecté à l'aide de la valeur TransmitFileOptions spécifiée.
Méthode publiqueSendPacketsAsyncEnvoie une collection de fichiers ou des données mises en mémoire tampon de façon asynchrone à un objet Socket connecté.
Méthode publiqueSendTo(Byte[], EndPoint)Envoie les données au point de terminaison spécifié.
Méthode publiqueSendTo(Byte[], SocketFlags, EndPoint)Envoie des données à un point de terminaison spécifique à l'aide du SocketFlags spécifié.
Méthode publiqueSendTo(Byte[], Int32, SocketFlags, EndPoint)Envoie le nombre spécifié d'octets de données au point de terminaison spécifié à l'aide du SocketFlags spécifié.
Méthode publiqueSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)Envoie le nombre spécifié d'octets de données au point de terminaison spécifié, en commençant à l'emplacement spécifié dans la mémoire tampon et en utilisant le SocketFlags spécifié.
Méthode publiqueSendToAsyncEnvoie des données de façon asynchrone à un hôte distant spécifique.
Méthode publiqueSetIPProtectionLevelDéfinit le niveau de protection IP sur un socket.
Méthode publiqueSetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)Affecte la valeur Boolean spécifiée à l'option Socket spécifiée.
Méthode publiqueSetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])Affecte la valeur spécifiée à l'option Socket spécifiée représentée sous la forme d'un tableau d'octets.
Méthode publiqueSetSocketOption(SocketOptionLevel, SocketOptionName, Int32)Affecte la valeur entière spécifiée à l'option Socket spécifiée.
Méthode publiqueSetSocketOption(SocketOptionLevel, SocketOptionName, Object)Affecte la valeur spécifiée à l'option Socket spécifiée représentée sous la forme d'un objet.
Méthode publiqueShutdownDésactive les envois et les réceptions sur un Socket.
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Début

La classe Socket fournit une grande variété de méthodes et de propriétés pour les communications réseau. La classe Socket vous permet d'effectuer des transferts de données synchrones et asynchrones à l'aide de n'importe quel protocole de communication répertorié dans l'énumération ProtocolType.

La classe Socket suit le modèle de désignation .NET Framework pour les méthodes asynchrones. Par exemple, la méthode synchrone Receive correspond aux méthodes asynchrones BeginReceive et EndReceive.

Si votre application nécessite un seul thread au cours de l'exécution, utilisez les méthodes suivantes, conçues pour le mode de fonctionnement synchrone.

  • Si vous utilisez un protocole orienté connexion tel que TCP, votre serveur peut écouter les connexions à l'aide de la méthode Listen. La méthode Accept traite toutes les demandes de connexion entrantes et retourne un Socket que vous pouvez utiliser pour la communication de données avec l'hôte distant. Utilisez ce Socket retourné pour appeler la méthode Send ou Receive. Appelez la méthode Bind avant d'appeler la méthode Listen si vous voulez spécifier l'adresse IP locale et le numéro de port. Utilisez le numéro de port zéro si vous souhaitez que le fournisseur de services sous-jacent vous assigne un port libre. Si vous voulez vous connecter à un hôte à l'écoute, appelez la méthode Connect. Pour communiquer des données, appelez la méthode Send ou Receive.

  • Si vous utilisez un protocole sans connexion, tel que UDP, vous n'avez pas du tout besoin d'écouter les connexions. Appelez la méthode ReceiveFrom pour accepter tous les datagrammes entrants. Utilisez la méthode SendTo pour envoyer des datagrammes à un hôte distant.

Pour traiter les communications à l'aide de threads séparés au cours de l'exécution, utilisez les méthodes suivantes, conçues pour le mode de fonctionnement asynchrone.

  • Si vous utilisez un protocole orienté connexion tel que TCP, utilisez Socket, la méthode BeginConnect et la méthode EndConnect pour vous connecter à un hôte à l'écoute. Utilisez les méthodes BeginSend et EndSend ou BeginReceive et EndReceive pour communiquer des données de manière asynchrone. Les demandes de connexion entrantes peuvent être traitées à l'aide des méthodes BeginAccept et EndAccept.

  • Si vous utilisez un protocole sans connexion tel que UDP, vous pouvez utiliser les méthodes BeginSendTo et EndSendTo pour envoyer des datagrammes, ainsi que les méthodes BeginReceiveFrom et EndReceiveFrom pour recevoir des datagrammes.

Si vous exécutez plusieurs opérations asynchrones sur un socket, elles ne se terminent pas nécessairement dans l'ordre dans lequel elles sont exécutées.

Une fois l'envoi ou la réception de données terminé, utilisez la méthode Shutdown pour désactiver le Socket. Après avoir appelé Shutdown, appelez la méthode Close pour libérer toutes les ressources associées à Socket.

La classe Socket vous permet de configurer Socket à l'aide de la méthode SetSocketOption. Récupérez ces paramètres à l'aide de la méthode GetSocketOption.

RemarqueRemarque

Si vous écrivez une application relativement simple et si vous n'avez pas besoin des performances maximales, préférez l'utilisation de TcpClient, TcpListener et UdpClient. Ces classes fournissent une interface plus simple et plus conviviale pour les communications de Socket.

L'exemple de code suivant montre comment la classe Socket peut être utilisée pour envoyer des données à un serveur HTTP et recevoir la réponse de celui-ci. Cet exemple entraîne un blocage jusqu'à la réception de la totalité de la page.


using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class GetSocket
{
    private static Socket ConnectSocket(string server, int port)
    {
        Socket s = null;
        IPHostEntry hostEntry = null;

        // Get host related information.
        hostEntry = Dns.GetHostEntry(server);

        // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
        // an exception that occurs when the host IP Address is not compatible with the address family
        // (typical in the IPv6 case).
        foreach(IPAddress address in hostEntry.AddressList)
        {
            IPEndPoint ipe = new IPEndPoint(address, port);
            Socket tempSocket = 
                new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            tempSocket.Connect(ipe);

            if(tempSocket.Connected)
            {
                s = tempSocket;
                break;
            }
            else
            {
                continue;
            }
        }
        return s;
    }

    // This method requests the home page content for the specified server.
    private static string SocketSendReceive(string server, int port) 
    {
        string request = "GET / HTTP/1.1\r\nHost: " + server + 
            "\r\nConnection: Close\r\n\r\n";
        Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
        Byte[] bytesReceived = new Byte[256];

        // Create a socket connection with the specified server and port.
        Socket s = ConnectSocket(server, port);

        if (s == null)
            return ("Connection failed");

        // Send request to the server.
        s.Send(bytesSent, bytesSent.Length, 0);  

        // Receive the server home page content.
        int bytes = 0;
        string page = "Default HTML page on " + server + ":\r\n";

        // The following will block until te page is transmitted.
        do {
            bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
            page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
        }
        while (bytes > 0);

        return page;
    }

    public static void Main(string[] args) 
    {
        string host;
        int port = 80;

        if (args.Length == 0)
            // If no server name is passed as argument to this program, 
            // use the current host name as the default.
            host = Dns.GetHostName();
        else
            host = args[0];

        string result = SocketSendReceive(host, port); 
        Console.WriteLine(result);
    }
}



.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1
  • SocketPermission 

    Établir une connexion sortante ou accepter une demande entrante.

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Les instances de cette classe sont thread-safe.

Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
© 2013 Microsoft. Tous droits réservés.