小编Jon*_*ist的帖子

Websocket服务器:从不调用Web套接字上的onopen函数

我正在尝试实现一个C#Web套接字服务器,但它给了我一些麻烦.我正在运行一个Web服务器(ASP.NET)来托管带有javascript的页面,而Web套接字服务器则是作为C#控制台应用程序实现的.

我能够检测来自客户端的连接尝试(运行javascript的chrome)以及从客户端检索握手.但是客户端似乎不接受我发回的握手(onopenWeb套接字上的函数永远不会被调用).

我一直在阅读The Web Socket协议,我看不出我做错了什么.下面是一些服务器代码:

Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8181);
listener.Bind(ep);
listener.Listen(100);
Console.WriteLine("Wainting for connection...");
Socket socketForClient = listener.Accept();
if (socketForClient.Connected)
{
    Console.WriteLine("Client connected");
    NetworkStream networkStream = new NetworkStream(socketForClient);
    System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(networkStream);
    System.IO.StreamReader streamReader = new System.IO.StreamReader(networkStream);

    //read handshake from client:
    Console.WriteLine("HANDSHAKING...");
    char[] shake = new char[255];
    streamReader.Read(shake, 0, 255);

    string handshake =
       "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" +
       "Upgrade: WebSocket\r\n" +
       "Connection: Upgrade\r\n" + …
Run Code Online (Sandbox Code Playgroud)

c# websocket

61
推荐指数
2
解决办法
7万
查看次数

在.NET事件中使用ref参数时,PowerShell崩溃

ref调用带有我订阅的参数的.NET事件时,PowerShell崩溃.

我已将问题减少到以下代码.

.净:

namespace PSEventTest
{
    public delegate void BadHandler(ref string str);

    public class PSEventTest
    {
        public event BadHandler BadEvent;

        public void InvokeBad()
        {
            var handler = BadEvent;
            if (handler != null)
            {
                var str = "bad";
                handler(ref str);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

电源外壳:

Add-Type -path $PSScriptRoot"\PSEventTest.dll"

$obj = New-Object PSEventTest.PSEventTest

$bad = Register-ObjectEvent -InputObject $obj -EventName BadEvent -Action {
    Write-Host "bad!" # it also crashes if this script-block is empty 
}

$obj.InvokeBad(); # crash
Run Code Online (Sandbox Code Playgroud)

当我运行PowerShell脚本时,我得到了这个:

在此输入图像描述

如果我按Debug …

.net powershell events powershell-4.0

13
推荐指数
1
解决办法
463
查看次数

类型约束中的通用

我正在努力研究一些仿制药.以下是我的设置:

interface I<T> { }

[...]
void Add<T>(T obj) where T : I<??> { }
Run Code Online (Sandbox Code Playgroud)

我如何能确保TAdd方法实现I

c# generics constraints

4
推荐指数
1
解决办法
160
查看次数

SQL UPDATE具有复合主键的表中的所有行(除了某些行)

我正在努力学习SQL语句.

我想在具有复合主键的表中更新除某些行之外的所有行.

这就是我现在所做的:

UPDATE Products SET Active = 0
Run Code Online (Sandbox Code Playgroud)

_

UPDATE Products SET Active = 1
WHERE (Id_A = 1 AND Id_B = 1 AND Id_C = 1) OR
      (Id_A = 1 AND Id_B = 2 AND Id_C = 1) OR
      (Id_A = 5 AND Id_B = 8 AND Id_C = 3) OR
       .
       .
       .
       etc
Run Code Online (Sandbox Code Playgroud)

这有效,但我不喜欢它.我希望能够一次性去做.

有没有办法在SQL中执行此操作?

sql composite-key except

4
推荐指数
1
解决办法
2537
查看次数

这是可能的:带有约束的类型的c#集合,还是泛型类型的集合?

我正在尝试将类型存储在集合中,以便稍后我可以实例化集合中类型的对象.但我不知道如何以最好的方式做到这一点.

到目前为止我有什么:

List<Type> list = new List<Type>();
list.Add(typeof(MyClass));
var obj = (MyClass)Activator.CreateInstance(list[0]);
Run Code Online (Sandbox Code Playgroud)

我希望Type在集合中有一些约束,或者更好,只是集合中的泛型类型而不是实例化Type对象.这可能吗?

c# generics collections

3
推荐指数
1
解决办法
2975
查看次数