SuperSocket

Posted fanweisheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SuperSocket相关的知识,希望对你有一定的参考价值。

配置和使用 Input Endpoint

由于Windows Azure的内部网络架构,你不能直接监听你配置中的IP和端口。在这种情况下,你需要在Windows Azure项目中配置Input Endpoint:

这些 endpoint的命名规则是 "AppServerName_ConfiguredListenPort"。

例如,我们在配置文件中配置了名为"RemoteProcessServer"的server:

<server name="RemoteProcessServer"

          serverTypeName="remoteProcess"

          ip="Any" port="2012" />

然后我们就应该创建一个名为"RemoteProcessServer_2012"的Endpoint。

在代码中,你可以通过编程的方式获得该Endpoint真正的端口号:

var instanceEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[serverConfig.Name + "_" + serverConfig.Port].Port;

但是你不用为SuperSocket这样做,因为 SuperSocket 已经实现了监听Endpoint的替换已经。 因此,你只需当SuperSocket的Bootstrap初始化的时候将Endpoint的字典传入就行了,最终代码如下:

public override bool OnStart()

    // Set the maximum number of concurrent connections

    ServicePointManager.DefaultConnectionLimit = 100;

 

    // For information on handling configuration changes

    // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

 
     m_Bootstrap = BootstrapFactory.CreateBootstrap();
 
    if (!m_Bootstrap.Initialize(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints.ToDictionary(p => p.Key, p => p.Value.IPEndpoint)))
    
        Trace.WriteLine("Failed to initialize SuperSocket!", "Error");
        return false;
    
 
    var result = m_Bootstrap.Start();
 
    switch (result)
    
        case (StartResult.None):
            Trace.WriteLine("No server is configured, please check you configuration!");
            return false;
 
        case (StartResult.Success):
            Trace.WriteLine("The server has been started!");
            break;
 
        case (StartResult.Failed):
            Trace.WriteLine("Failed to start SuperSocket server! Please check error log for more information!");
            return false;
 
        case (StartResult.PartialSuccess):
            Trace.WriteLine("Some server instances were started successfully, but the others failed to start! Please check error log for more information!");
            break;
    
 
    return base.OnStart();

最后,你就可以启动你的Windows Azure实例了。

以上是关于SuperSocket的主要内容,如果未能解决你的问题,请参考以下文章