Socket Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Implements the Berkeley sockets interface.
Assembly: System.Net (in System.Net.dll)
The Socket type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | AddressFamily | Gets the address family of the Socket. |
![]() | Connected | Gets a value that indicates whether a Socket is connected to a remote host as of the last operation. |
![]() | LocalEndPoint | Gets the local endpoint that contains the local IP address and port number to which the socket is bound. This is the endpoint that the socket is using for communications. |
![]() | NoDelay | Gets or sets a Boolean value that specifies whether the Socket is using the Nagle algorithm. |
![]() ![]() | OSSupportsIPv4 | Gets a value indicating whether IPv4 support is available and enabled on the current host. |
![]() ![]() | OSSupportsIPv6 | Gets a value indicating whether IPv6 support is available and enabled on the current host. |
![]() | ProtocolType | Gets the protocol type of the Socket. |
![]() | ReceiveBufferSize | Gets or sets a value that specifies the size of the receive buffer of the Socket. |
![]() | RemoteEndPoint | Gets the remote endpoint. |
![]() | SendBufferSize | Gets or sets a value that specifies the size of the send buffer of the Socket. |
![]() | Ttl | Gets or sets a value that specifies the Time To Live (TTL) value of Internet Protocol (IP) packets sent by the Socket. |
| Name | Description | |
|---|---|---|
![]() | AcceptAsync | Begins an asynchronous operation to accept an incoming connection attempt. |
![]() | Bind | Associates a socket with a specific local endpoint. You do not need to call Bind before using the ConnectAsync method unless you need to use a specific local endpoint. |
![]() ![]() | CancelConnectAsync | Cancels an outstanding asynchronous socket operation for a remote host connection. |
![]() | Close() | Closes the Socket connection and releases all associated resources. |
![]() | Close(Int32) | Closes the Socket connection and releases all associated resources with a specified timeout to allow queued data to be sent. |
![]() | ConnectAsync(SocketAsyncEventArgs) | Begins an asynchronous request for a remote host connection. |
![]() ![]() | ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) | Begins an asynchronous request for a remote host connection. |
![]() | Dispose() | Releases the unmanaged resources used by the Socket, and optionally disposes of the managed resources. |
![]() | Dispose(Boolean) | Releases the unmanaged resources used by the Socket, and optionally disposes of the managed resources. |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Frees resources used by the Socket class. (Overrides Object::Finalize().) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | Listen | Listens for incoming connection attempts. |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ReceiveAsync | Begins an asynchronous request to receive data from a connected Socket object. |
![]() | ReceiveFromAsync | Begins an asynchronous request to receive data from a specific remote host. |
![]() | SendAsync | Sends data asynchronously to a connected Socket object. |
![]() | SendToAsync | Sends data asynchronously to a specific remote host. |
![]() | Shutdown | Disables sends and receives on a Socket. |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() | AssociateToNetworkInterface | Sets information about a network interface by associating it with a new set of network interface information. (Defined by SocketExtensions.) |
![]() | GetCurrentNetworkInterface | Gets all available information about the network interface. (Defined by SocketExtensions.) |
![]() | SetNetworkPreference | Sets the preference for a network interface to use either cellular or non-cellular technology. (Defined by SocketExtensions.) |
![]() | SetNetworkRequirement | Sets the requirement for a network interface to use either cellular or non-cellular technology. (Defined by SocketExtensions.) |
The Socket class provides a set of methods and properties for network communications. The Socket class allows you to perform asynchronous data transfer using any of the communication protocols listed in the ProtocolType enumeration.
For Windows Phone OS 7.1, the supported ProtocolType values are the TCP and UDP protocol. For Windows Phone OS 7.1, TCP unicast, UDP unicast, and UDP multicast clients are supported.
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.
For sockets, the security policy system affects cross-domain network access. A security policy is required for any connections from sockets.
public class Example { static ManualResetEvent clientDone = new ManualResetEvent(false); public static void Demo(System.Windows.Controls.TextBlock outputBlock) { SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs(); // NOTE: This is a fake end point. // You must change this to a valid URL or you will get an exception below. DnsEndPoint hostEntry = new DnsEndPoint("http://www.contoso.com", 80); // Create a socket and connect to the server Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(SocketEventArg_Completed); socketEventArg.RemoteEndPoint = hostEntry; socketEventArg.UserToken = sock; sock.ConnectAsync(socketEventArg); clientDone.WaitOne(); } // A single callback is used for all socket operations. // This method forwards execution on to the correct handler // based on the type of completed operation static void SocketEventArg_Completed(object sender, SocketAsyncEventArgs e) { switch (e.LastOperation) { case SocketAsyncOperation.Connect: ProcessConnect(e); break; case SocketAsyncOperation.Receive: ProcessReceive(e); break; case SocketAsyncOperation.Send: ProcessSend(e); break; default: throw new Exception("Invalid operation completed"); } } // Called when a ConnectAsync operation completes private static void ProcessConnect(SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success) { // Successfully connected to the server // Send 'Hello World' to the server byte[] buffer = Encoding.UTF8.GetBytes("Hello World"); e.SetBuffer(buffer, 0, buffer.Length); Socket sock = e.UserToken as Socket; bool willRaiseEvent = sock.SendAsync(e); if (!willRaiseEvent) { ProcessSend(e); } } else { throw new SocketException((int)e.SocketError); } } // Called when a ReceiveAsync operation completes // </summary> private static void ProcessReceive(SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success) { // Received data from server // Data has now been sent and received from the server. // Disconnect from the server Socket sock = e.UserToken as Socket; sock.Shutdown(SocketShutdown.Send); sock.Close(); clientDone.Set(); } else { throw new SocketException((int)e.SocketError); } } // Called when a SendAsync operation completes private static void ProcessSend(SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success) { // Sent "Hello World" to the server successfully //Read data sent from the server Socket sock = e.UserToken as Socket; bool willRaiseEvent = sock.ReceiveAsync(e); if (!willRaiseEvent) { ProcessReceive(e); } } else { throw new SocketException((int)e.SocketError); } } }




