从WCF切换到网络库

时间:2016-04-06 18:09:12

标签: c# wcf networking

目前,我使用WCF为我的项目进行网络连接。但是,我想切换到一些网络库,例如Lidgren Network。

由于它是WCF,它使用接口,可以发送&使用一种方法接收数据,Lidgren Network有点处于较低级别,您需要构建和发送数据包,这不是问题。

问题是,我没有任何想法,我只能通过一种方法发送和接收,就像使用WCF一样。

我们说我用WCF获得了一些客户端代码:

void SomeCode()
{
    var status = wcfChannel.CheckUserId(id);
    if (status)
    {
        // true
        // do something
    }
    else
    {
        // false
        // do something
    }
}

使用lidgren网络将是:

void SomeCode()
{
    var packet = new packet(...);
    packet.Write(id);
    var status = send2Server(packet);
    if (status)
    {
        // true
        // do something
    }
    else
    {
        // false
        // do something
    }
}

那么,' send2Server'应该以某种方式实施。由于它只能在循环中接收数据包(?),所以我没有任何想法。 好吧,一个 - 我可以在SomeCode的类中有一些变量,并且数据包接收上的客户端网络接收循环将改变SomeCode类中的这些变量。此外,还需要添加一些延迟,并让这些变量进一步使用。 但是,应该有更好的方法来实现它。

1 个答案:

答案 0 :(得分:0)

好的,我刚注意到Lidgren Network支持同步:

// create, write data to packet and send it
var packet = new packet(...);
packet.Write(id);
server.send2Server(packet);

// this will block until a message arrives
server.MessageReceivedEvent.WaitOne();

// msg is now received
var msg = server.ReadMessage();
// process received packet below