zoukankan      html  css  js  c++  java
  • 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实例了。
  • 相关阅读:
    python中关于操作时间的方法(一):使用time模块
    size_t类型
    批量下载网络图片并zip打包
    遇到的java面试题
    jsp中button与submit的用法
    springmvc json字符串转化成json对象
    Cas 介绍及使用
    java中post时中文乱码
    mybatis使用generator生成对应的model、mapping配置文件、dao
    移动端接口:java写get方式访问数据(springmvc+spring。。。)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11127212.html
Copyright © 2011-2022 走看看