<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: websocket(серверная часть - perl)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID8/7750.html</link>
    <description>#!/usr/bin/perl&lt;br&gt;use strict;&lt;br&gt;use Socket;&lt;br&gt;use Carp;&lt;br&gt;sub logmsg &#123; print &quot;&#064;_ &#092;n&quot; &#125;&lt;br&gt;my $port = shift &amp;#124;&amp;#124; 8888;&lt;br&gt;my $proto = getprotobyname(&apos;tcp&apos;);&lt;br&gt;($port) = $port =~ /^(&#092;d+)$/ or die &quot;invalid port&quot;;&lt;br&gt;socket(Server, PF_INET, SOCK_STREAM, $proto) &amp;#124;&amp;#124; die &quot;socket: $!&quot;;&lt;br&gt;setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack(&quot;l&quot;, 1))   &amp;#124;&amp;#124; die &quot;setsockopt:$!&quot;;&lt;br&gt;bind(Server, sockaddr_in($port, INADDR_ANY)) &amp;#124;&amp;#124; die &quot;bind: $!&quot;;&lt;br&gt;listen(Server,SOMAXCONN) &amp;#124;&amp;#124; die &quot;listen: $!&quot;;&lt;br&gt;my $paddr;&lt;br&gt;$SIG&#123;CHLD&#125; = &#092;&amp;REAPER;&lt;br&gt;for ( ; $paddr = accept(Client,Server); close Client) &#123;&lt;br&gt;    my($port,$iaddr) = sockaddr_in($paddr);&lt;br&gt;    my $name = gethostbyaddr($iaddr,AF_INET);&lt;br&gt;    my ($len, $data) = (0, &quot;&quot;);&lt;br&gt;    $len = sysread(Client, $data, 8192, length($data));&lt;br&gt;    logmsg $data;&lt;br&gt;    my $Key;&lt;br&gt;    my $SecretKey = &quot;258EAFA5-E914-47DA-95CA-C5AB0DC85B11&quot;;&lt;br&gt;    if ($data =~ /Sec-WebSocket-Key: (.*?)&#092;r/) &#123;&lt;br&gt;        my $data = $1.$SecretKey;&lt;br&gt;        use Digest::SHA1 qw/sha1_base64/;&lt;br&gt;        $Key</description>

<item>
    <title>websocket(серверная часть - perl) (ЫЫ)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID8/7750.html#2</link>
    <pubDate>Wed, 27 Apr 2016 21:58:08 GMT</pubDate>
    <description>http://perldoc.perl.org/Digest/SHA.html&lt;br&gt;By convention, CPAN Digest modules do not pad their Base64 output. &lt;br&gt;   &#091;code&#093;  while (length($b64_digest) &#037; 4) &#123;&lt;br&gt;    $b64_digest .= &apos;=&apos;;&lt;br&gt;    &#125;&lt;br&gt;&#091;/code&#093; &lt;br&gt;&amp;gt; Так работает - &lt;br&gt;&amp;gt; &#091;code&#093; &lt;br&gt;&amp;gt;    use MIME::Base64; &lt;br&gt;&amp;gt;    $Key = MIME::Base64::encode(sha1($data)); &lt;br&gt;&amp;gt; &#091;/code&#093; </description>
</item>

<item>
    <title>websocket(серверная часть - perl) (ACCA)</title>
    <link>https://www.solaris.opennet.ru/openforum/vsluhforumID8/7750.html#1</link>
    <pubDate>Thu, 18 Jul 2013 21:50:31 GMT</pubDate>
    <description>Баг в sha1_base64. Причём и в Digest::SHA1 и в Digest::SHA&lt;br&gt;&lt;br&gt;Так работает - &lt;br&gt;&#091;code&#093;&lt;br&gt;   use MIME::Base64;&lt;br&gt;   $Key = MIME::Base64::encode(sha1($data));&lt;br&gt;&#091;/code&#093;&lt;br&gt;</description>
</item>

</channel>
</rss>
