typedef struct
{
char m_multiip[16]; //多播地址
WORD m_wMultiPort; //多播端口
WORD m_wLocaport; //本地端口
int m_videobuff; //音频buff数量
int m_audiobuff; //视频buff数量
int m_channuser; //通道用户数
int m_totaluser; //系统用户数
int (WINAPI *m_UserCheckcallback)(char *m_url,char *username,char *password);
//转发连接时用户验证
int (WINAPI *m_UserConnectcallback)(char *m_sername,int channel,BOOL bStart,char *m_userurl,char *username,char *password,int transtype,long handle);
//转发用户连接或断开回调函数
}VSNET_REDIRECTORINFO;int (WINAPI *m_UserCheckcallback)(char *m_url,char *username,char *password)int (WINAPI *m_UserConnectcallback)(char *m_sername,int channel,BOOL bStart,char *m_userurl,char *username,char *password,int transtype,long handle);
{
char m_multiip[16]; //多播地址
WORD m_wMultiPort; //多播端口
WORD m_wLocaport; //本地端口
int m_videobuff; //音频buff数量
int m_audiobuff; //视频buff数量
int m_channuser; //通道用户数
int m_totaluser; //系统用户数
int (WINAPI *m_UserCheckcallback)(char *m_url,char *username,char *password);
//转发连接时用户验证
int (WINAPI *m_UserConnectcallback)(char *m_sername,int channel,BOOL bStart,char *m_userurl,char *username,char *password,int transtype,long handle);
//转发用户连接或断开回调函数
}VSNET_REDIRECTORINFO;int (WINAPI *m_UserCheckcallback)(char *m_url,char *username,char *password)int (WINAPI *m_UserConnectcallback)(char *m_sername,int channel,BOOL bStart,char *m_userurl,char *username,char *password,int transtype,long handle);
public delegate int m_UserConnectcallback(string m_sername, int channel, bool bStart, string m_userurl, string username, string password, int transtype, IntPtr handle);
[StructLayout(LayoutKind.Sequential)]
public struct VSNET_REDIRECTORINFO
{
public string m_multiip;//多播地址,最多16位
public ushort m_wMultiPort;//多播端口
public ushort m_wLocaport;//本地端口
public int m_videobuff;//音频buff数量
public int m_audiobuff;//视频buff数量
public int m_channuser;//通道用户数
public int m_totaluser;//系统用户数
public m_UserCheckcallback n_UserCheckcallback;//转发连接时用户验证
public m_UserConnectcallback n_UserConnectcallback;//转发用户连接或断开回调函数 }[DllImport("NetClient.dll")]
public static extern bool VSNET_SetRedirectorInfo(ref VSNET_REDIRECTORINFO m_pRedirect);//设置转发服务器参数
/// <summary>
/// 设置转发服务器
/// </summary>
/// <param name="myurl">IP地址</param>
/// <param name="dbdk">多播端口</param>
/// <param name="bddk">本地端口</param>
/// <returns>返回是否成功</returns>
public int SetRedirector(string myurl, ushort dbdk, ushort bddk)
{
VSNET_REDIRECTORINFO redirector = new VSNET_REDIRECTORINFO();
redirector.m_multiip = myurl.Trim();
redirector.m_wMultiPort = dbdk;
redirector.m_wLocaport = bddk;
redirector.m_videobuff = 50;
redirector.m_audiobuff = 50;
redirector.m_channuser = 300;
redirector.m_totaluser = 300;
redirector.n_UserCheckcallback = null;
redirector.n_UserConnectcallback = null; bool setinfo = VideoSApi.VSNET_SetRedirectorInfo(ref redirector);
int isstart = -1;
if (setinfo)
{
isstart = VideoSApi.VSNET_StartListenClient(myurl);
}
return isstart;
}
我是这么写的,但是不知道为什么怎么搞都不对,大家帮忙看看什么问题啊
public struct VSNET_REDIRECTORINFO
{
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=16)]
public string m_multiip;//多播地址,最多16位
........
[MarshalAs(UnmanagedType.FunctionPtr)]
public m_UserCheckcallback n_UserCheckcallback;//转发连接时用户验证
[MarshalAs(UnmanagedType.FunctionPtr)]
public m_UserConnectcallback n_UserConnectcallback;//转发用户连接或断开回调函数 }
string 改 SByte[] 试试?