


# Socket class









<p>Typed wrapper around a Zircon socket object.</p>




## Constructors

[Socket](../zircon/Socket/Socket.md) ([Handle](../zircon/Handle-class.md) handle)

   


## Properties

##### [handle](../zircon/Socket/handle.md) &#8594; [Handle](../zircon/Handle-class.md)



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [hashCode](../zircon/Socket/hashCode.md) &#8594; int



The hash code for this object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [isValid](../zircon/Socket/isValid.md) &#8594; bool



  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_



##### [runtimeType](../zircon/Socket/runtimeType.md) &#8594; Type



A representation of the runtime type of the object.  
_<span class="feature read-only">read-only</span><span class="feature inherited">inherited</span>_





## Methods

##### [close](../zircon/Socket/close.md)() void



  
_<span class="feature inherited">inherited</span>_



##### [noSuchMethod](../zircon/Socket/noSuchMethod.md)(Invocation invocation) dynamic



Invoked when a non-existent method or property is accessed.  
_<span class="feature inherited">inherited</span>_



##### [passHandle](../zircon/Socket/passHandle.md)() [Handle](../zircon/Handle-class.md)



  
_<span class="feature inherited">inherited</span>_



##### [read](../zircon/Socket/read.md)(int numBytes) [ReadResult](../zircon/ReadResult-class.md)



  




##### [toString](../zircon/Socket/toString.md)() String



A string representation of this object.  
_<span class="feature inherited">inherited</span>_



##### [write](../zircon/Socket/write.md)(ByteData data, [int options = 0]) [WriteResult](../zircon/WriteResult-class.md)



  






## Operators

##### [operator ==](../zircon/Socket/operator_equals.md)(Object other) bool



The equality operator.  
_<span class="feature inherited">inherited</span>_










## Constants

##### [DATAGRAM](../zircon/Socket/DATAGRAM-constant.md) const int



  




##### [DISPOSITION_WRITE_DISABLED](../zircon/Socket/DISPOSITION_WRITE_DISABLED-constant.md) const int



  




##### [DISPOSITION_WRITE_ENABLED](../zircon/Socket/DISPOSITION_WRITE_ENABLED-constant.md) const int



  




##### [PEER_CLOSED](../zircon/Socket/PEER_CLOSED-constant.md) const int



  




##### [PEER_WRITE_DISABLED](../zircon/Socket/PEER_WRITE_DISABLED-constant.md) const int



  




##### [READABLE](../zircon/Socket/READABLE-constant.md) const int



  




##### [STREAM](../zircon/Socket/STREAM-constant.md) const int



  




##### [WRITABLE](../zircon/Socket/WRITABLE-constant.md) const int



  




##### [WRITE_DISABLED](../zircon/Socket/WRITE_DISABLED-constant.md) const int



  









