2.2 SGIP_Connect()函数
功能:与网关建立连接并返回建立好的SOCK描述符。
函数:int SGIP_Connect(char *gw_ip,short port,char *username,char *passwd);
参数说明:
参数 描 述
gw_ip 短信通平台地址
port 短信通平台端口号
username 用户登录平台时的用户名
passwd 用户登录时,所需要的密码.
返回值: 大于0,则为通过短信通认证后的SOCK描述符。
小于0,见附录错误码。上面是C++函数说明
我用C#封装
 /// <summary>
        /// 与网关建立连接并返回建立好的SOCK描述符。
        /// 注意事项;返回的SOCK描述符是阻塞方式返回,并未对该描述符进行任何设置。用户可以根据自己的需要设置该描述符属性。
        /// </summary>
        /// <param name="gw_ip">短信通平台地址</param>
        /// <param name="port">短信通平台端口号</param>
        /// <param name="username">用户登录平台时的用户名</param>
        /// <param name="passwd">用户登录时,所需要的密码.</param>
        /// <returns>返回值: 大于0,则为通过短信通认证后的SOCK描述符。小于0,见附录错误码。</returns>
        [DllImport("sgipapi.dll", EntryPoint = "SGIP_Connect")]
        public static extern int SGIP_Connect(
            string gw_ip,
            short port,
            string username,
            string passwd
            );
我调用的参数传入进去后...联通后台的人查了他们自己的后台给我说是错误-bash-3.00$ grep 210.21.225.213 MtDebug.log
04-01 11:02:32 >>[9124-1588][210.21.225.213]提交命令[SGIP_BIND],非法登录,如登录名、口令出错、登录名与口令不符等。[1]
04-01 11:02:32 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:37:23 >>[9124-1588][210.21.225.213]提交命令[SGIP_BIND],非法登录,如登录名、口令出错、登录名与口令不符等。[1]
04-01 11:37:24 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:39:42 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:40:11 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:40:23 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:41:36 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:41:36 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:41:40 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:42:23 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:42:37 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
04-01 11:42:37 >>SP[9124][IP:210.21.225.213] 对方数据错,错误码[5]!
-bash-3.00$  兄弟们类型有错吗????好奇怪!!!

解决方案 »

  1.   

    [DllImport("sgipapi.dll", EntryPoint = "SGIP_Connect")] 
            public static extern int SGIP_Connect( 
                byte []gw_ip, 
                short port, 
                byte []username, 
                byte []passwd 
                ); 
      

  2.   

    你试过楼上说的吗?
    c++中的char *在c#中应该是byte[]的吧
      

  3.   

    /// <summary> 
            /// 与网关建立连接并返回建立好的SOCK描述符。 
            /// 注意事项;返回的SOCK描述符是阻塞方式返回,并未对该描述符进行任何设置。用户可以根据自己的需要设置该描述符属性。 
            /// </summary> 
            /// <param name="gw_ip">短信通平台地址 </param> 
            /// <param name="port">短信通平台端口号 </param> 
            /// <param name="username">用户登录平台时的用户名 </param> 
            /// <param name="passwd">用户登录时,所需要的密码. </param> 
            /// <returns>返回值: 大于0,则为通过短信通认证后的SOCK描述符。小于0,见附录错误码。 </returns> 
            [DllImport("sgipapi.dll", EntryPoint = "SGIP_Connect")] 
            public static extern int SGIP_Connect( 
                string gw_ip, 
                short port, 
                string username, 
                string passwd 
                ); OK这个方法已经调用成功
      

  4.   

    [3340]中发生未处理的win32异常