Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Socket Classe

Implementa a interface soquetes Berkeley.

Namespace:  System.Net.Sockets
Assembly:  System (em System. dll)

public class Socket : IDisposable

The Socket class provides a rich set of methods and properties for network communications.A classe Socket permite que você execute transferência de dados tanto síncrona quanto assíncrona usando qualquer um dos protocolos de comunicação na enumeração ProtocolType.

A classe Socket segue o padrão de nomenclatura do .NET Framework para métodos assíncronos. For example, the synchronous Receive method corresponds to the asynchronous BeginReceive and EndReceive methods.

Se seu aplicativo requer somente um Thread durante a execução, use os métodos a seguir, que são criados para o modo de operação síncrona.

  • If you are using a connection-oriented protocol such as TCP, your server can listen for connections using the Listen method.The Accept method processes any incoming connection requests and returns a Socket that you can use to communicate data with the remote host.Use this returned Socket to call the Send or Receive method.Call the Bind method prior to calling the Listen method if you want to specify the local IP address and port number.Use um número de porta de zero se você desejar o provedor de serviços base para atribuir uma porta livre para você.If you want to connect to a listening host, call the Connect method.To communicate data, call the Send or Receive method.

  • Se você estiver usando um protocolo sem conexão, como UDP, você não precisará escutar as conexões em Tudo.Call the ReceiveFrom method to accept any incoming datagrams.Use the SendTo method to send datagrams to a remote host.

Para Processoar as comunicações usando segmentos separados durante a execução, use os métodos a seguir, que são criados para o modo de operação assíncrona.

Se você executar Múltiplo assíncrono operações em um Soquete, eles fazem não necessariamente Concluir na ordem na qual eles são iniciados.

When you are finished sending and receiving data, use the Shutdown method to disable the Socket.After calling Shutdown, call the Close method to release all resources associated with the Socket.

The Socket class allows you to configure your Socket using the SetSocketOption method.Retrieve these settings using the GetSocketOption method.

ObservaçãoObservação:

If you are writing a relatively simple application and do not require maximum performance, consider using TcpClient, TcpListener, and UdpClient.These classes provide a simpler and more user-friendly interface to Socket communications.

Windows Mobile para Pocket PC, Windows Mobile para Smartphone, O Windows CE Platform Note:

Nem todas as opções de socket têm suporte em todos os sistemas operacionais de dispositivos.

The following code example shows how the Socket class can be used to send data to an HTTP server and receive the response.Este exemplo bloqueia até que a página inteira é recebida.

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



import System.*;
import System.Text.*;
import System.IO.*;
import System.Net.*;
import 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.Resolve(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).
        for (int iCtr = 0; iCtr < hostEntry.get_AddressList().length; iCtr++) {
            IPAddress address = hostEntry.get_AddressList()[iCtr];
            IPEndPoint ipe = new IPEndPoint(address, port);
            Socket tempSocket = new Socket(ipe.get_AddressFamily(),
                SocketType.Stream, ProtocolType.Tcp);
            tempSocket.Connect(ipe);
            if (tempSocket.get_Connected()) {
                s = tempSocket;
                break;
            }
            else {
                continue;
            }
        }

        return s;
    } //ConnectSocket

    // 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";
        System.Byte bytesSent[] = 
            (System.Byte[])Encoding.get_ASCII().GetBytes(request);
        System.Byte bytesReceived[] = new System.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((ubyte[])bytesSent, bytesSent.length, (SocketFlags)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((ubyte[])bytesReceived,
                bytesReceived.length, (SocketFlags)0);
            page = page + Encoding.get_ASCII().GetString(
                (ubyte[])bytesReceived, 0, bytes);
        } while (bytes > 0);
        return page;
    } //SocketSendReceive

    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);
    } //main
} //GetSocket


  • SocketPermission 

    Para estabelecer uma conexão de saída ou aceitar uma Solicitar de entrada.

System.Object
  System.Net.Sockets.Socket

As ocorrências dessa classe são Thread seguro.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft