MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla

Compare Revisions

Writing a WebSocket server in C#

Change Revisions

Revision 515631:

Revision 515631 by rvighne on

Revision 520959:

Revision 520959 by Nicholas_Adamson on

Title:
Writing a WebSocket server in C#
Writing a WebSocket server in C#
Slug:
WebSockets/Writing_WebSocket_server
WebSockets/Writing_WebSocket_server
Tags:
"Tutorial", "NeedsMarkupWork", "WebSockets", "HTML5"
"Tutorial", "NeedsMarkupWork", "WebSockets", "HTML5"
Content:

Revision 515631
Revision 520959
n20      WebSocket is communicating over a <a href="http://en.wikipen20      WebSocket's communicate over a <a href="http://en.wikipedia
>dia.org/wiki/Transmission_Control_Protocol" title="http://en.wiki>.org/wiki/Transmission_Control_Protocol" title="http://en.wikiped
>pedia.org/wiki/Transmission_Control_Protocol">TCP (Transmission C>ia.org/wiki/Transmission_Control_Protocol">TCP (Transmission Cont
>ontrol Protocol)</a>&nbsp;connection, luckily C# has a <a href="h>rol Protocol)</a>&nbsp;connection, luckily C# has a <a href="http
>ttp://msdn.microsoft.com/en-us/library/system.net.sockets.tcplist>://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistene
>ener.aspx" title="http://msdn.microsoft.com/en-us/library/system.>r.aspx" title="http://msdn.microsoft.com/en-us/library/system.net
>net.sockets.tcplistener.aspx">TcpListener</a> class which name te>.sockets.tcplistener.aspx">TcpListener</a> class which does as th
>lls everything. It is in <em>System.Net.Sockets</em> namespace.>e name suggests. It is in the&nbsp;<em>System.Net.Sockets</em> na
 >mespace.
n24        <span style="line-height: 1.572;">It is a good idea to usn24        <span style="line-height: 1.572;">It is a good idea to us
>e the&nbsp;<code>using</code></span> <span style="line-height: 1.>e the&nbsp;<code>using</code></span> <span style="line-height: 1.
>572;">keyword to write less. It means you have not to retype the >572;">keyword to write less. It means you do not have to retype t
>name onamespace if you use classes from it.</span>>he namespace iyou use classes from it.</span>
n41        <span style="line-height: 1.572;">To easily give the expen41        <span style="line-height: 1.572;">To easily give the expe
>cted type to first parameter, use the&nbsp;</span><code>Parse</co>cted type to the first parameter, use the&nbsp;</span><code>Parse
>de><span style="line-height: 1.572;">&nbsp;static method of&nbsp;></code><span style="line-height: 1.572;">&nbsp;static method of&n
></span><code>IPAddress</code><em>.</em>>bsp;</span><code>IPAddress</code><em>.</em>
n53        Waiting for a connection and if it is over TCP, accepts in53        Waits for a Tcp connection, accepts it and returns it as 
>t and returns it as a TcpClient object.</span>>a TcpClient object.</span>
n57      <span style="line-height: 1.572;">Let us use up what we havn57      <span style="line-height: 1.572;">Here's how to use what we
>e learnt.</span>> have learnt:</span>
n86        Gets the stream which is the communication channel. Writen86        Gets the stream which is the communication channel. Both 
>- and readable by both sides.>sides of the channel have reading and writing capability.
n95        Number of bytes of data has been sent. Value of it is 0 un95        This is the Number of bytes of data that has been sent. t
>ntil <em>NetworkStream.DataAvailable</em> is <em>false</em>.>he Value is zero until <em>NetworkStream.DataAvailable</em> is <e
 >m>false</em>.
n108      Writes bytes from <em>buffer</em> from <em>offset</em>&nbspn108      Writes bytes from buffer, offset and size determine length 
>;to <em>size</em> to stream.>of message.
n114      Reads bytes to <em>buffer</em> from <em>offset&nbsp;</em>ton114      Reads bytes to <em>buffer, offset and size determine the le
> <em>size</em> from stream.>ngth of the message&nbsp;</em>
n139      When a client connects to a server, it sends a GET request n139      When a client connects to a server, it sends a GET request 
>to upgrade the connection to a WebSocket from a simple HTTP reque>to upgrade the connection to a WebSocket from a simple HTTP reque
>st. This is known as handshake.>st. This is known as handshaking.
n165      <li>obtain the value of <em>Sec-WebSocket-Key</em> request n165      <li>Obtain the value of <em>Sec-WebSocket-Key</em> request 
>header without any leading and trailing whitespace>header without any leading and trailing whitespace
n167      <li>concatenate it with "258EAFA5-E914-47DA-95CA-C5AB0DC85Bn167      <li>Concatenate it with "258EAFA5-E914-47DA-95CA-C5AB0DC85B
>11">11"
n169      <li>compute SHA-1 and Base64 code of itn169      <li>Compute SHA-1 and Base64 code of it
n171      <li>write it back as value of <em>Sec-WebSocket-Accept</em>n171      <li>Write it back as value of <em>Sec-WebSocket-Accept</em>
> response header as part of a HTTP response.> response header as part of a HTTP response.
t315    <h2>t315    <h2 id="Related">

Back to History