【问题标题】:C# Tcp Server - HTML5 Websocket communicationC# Tcp 服务器 - HTML5 Websocket 通信
【发布时间】:2014-10-24 09:52:38
【问题描述】:

我正在编写 C# Tcp 服务器和 HTML5 Websocket 客户端。但是当从客户端向服务器发送消息时,我在 C# Tcp 服务器上收到“GET/HTTP/1.1”消息。

c# 服务器

using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace websocket
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.2"), 500);
            server.Start();
            Console.WriteLine("Basladi");
            Console.WriteLine("Bekliyor");
            while (true)
            {
                TcpClient client = server.AcceptTcpClient();
                Console.WriteLine("Baglandi");
                NetworkStream asd = client.GetStream();
                byte[] buffer = new byte[1024];
                String mesaj = Encoding.ASCII.GetString(buffer, 0, asd.Read(buffer, 0, buffer.Length));
                Console.WriteLine(mesaj);
            }
            server.Stop();
        }
    }
}

HTML5 Websocket 客户端

function WebSocketTest()
{
     var ws = new WebSocket("ws://127.0.0.2:500");
     ws.onopen = function()
     {
        ws.send("Message to send");
        document.write("Message is sent...");
     };
     ws.onmessage = function (evt) 
     { 
        var received_msg = evt.data;
        document.write("Message is received...");
     };
     ws.onclose = function()
     { 
        document.write("Connection is closed..."); 
     };
}

结果

GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.2:500
Origin: null
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: Nmh4m9EiHa9GFx8Ft5Z9bQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36

【问题讨论】:

标签: c# javascript html tcp


【解决方案1】:

WebSockets 不是普通的 TCP 套接字,而是 HTTP(s) 连接中的一个类似套接字的层。您在这里看到的是客户端的 HTTP 请求,请求将 HTTP 连接升级为 WebSocket 连接。 如果您不想使用现有的 WebSocket 库,则必须自己实现协议,即首先实现一个最小的 Web 服务器 (RFC2616),然后将 WebSocket 层放在顶部 (RFC6455)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多