网络监控(DS-4004HC)C#实现客户端连接失败??
下面aa变量一直返回-1的值,
作过的朋友,请把C#代码发到我邮箱[email protected],最好是服务器端和客户端一块,收到立即结帖给分,谢谢!!InterfaceNetClientDLL.MP4_ClientSetNetPort(5050, 6050);
InterfaceNetClientDLL.MP4_ClientStartup(1000,this.panel1.Handle);
InterfaceNetClientDLL.MP4_ClientSetShowMode(0,RGB(10,10,10));
InterfaceNetClientDLL.MP4_ClientSetTTL(64);
int aa=0;
PCLIENT_VIDEOINFO vinfo = new PCLIENT_VIDEOINFO();
vinfo.m_bImgFormat = 0;
vinfo.m_bRemoteChannel =0;
vinfo.m_bSendMode = 0;
vinfo.m_bUserCheck = true;
vinfo.m_hShowVideo = this.panel1.Handle;
vinfo.m_sIPAddress = "127.0.0.1";
vinfo.m_sUserName = "123";
vinfo.m_sUserPassword = "w";
NewCap.Monitor.InterfaceNetClientDLL.READDATACALLBACK myreaddata = new InterfaceNetClientDLL.READDATACALLBACK(readdate);
             GCHandle.Alloc(myreaddata); aa = InterfaceNetClientDLL.MP4_ClientStart(ref  vinfo, myreaddata);
//--------------------------
//客户端的参数结构
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct PCLIENT_VIDEOINFO
    {
        public byte m_bRemoteChannel;//对应服务端的通道号
        public byte m_bSendMode;//网络连接方式
        public byte m_bImgFormat;//图像格式,0为服务端主通道的图像;1为服务端子通道的图像
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
        public string m_sIPAddress;//服务端的IP地址
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string m_sUserName;//用户名
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string m_sUserPassword;//密码
        public bool m_bUserCheck;//是否需要发送用户名和密码
        public IntPtr m_hShowVideo;//显示区域
    }
//-------------------------

解决方案 »

  1.   

    都没人会呀,自己已经解决了一部份
    现在客户端没什么问题了
    只是连接服务器端时,出现内存不让写written,有点奇怪,还没找到原因。
      

  2.   

    自带的是VC的,现在想用C#的开发
      

  3.   

    可能是MP4_ServerWriteDataEx函数出现问题,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
    byte[] temp = new byte[Convert.ToInt32(Length)+10];
    Marshal.Copy(DataBuf, temp, 0, Convert.ToInt32(Length));if (FrameType == PktAudioFrames)
    {
         InterfaceNetServerDLL.MP4_ServerWriteDataEx(channelNumber, temp, Length, FrameType, status,1);//文件头
         InterfaceNetServerDLL.MP4_ServerWriteDataEx(channelNumber, temp, Length, FrameType, status, 0);
    }
    else if (FrameType ==PktSubIFrames  ¦ ¦ FrameType ==PktSubPFrames  ¦ ¦ FrameType == PktSubBBPFrames  ¦ ¦ FrameType == PktSubSysHeader)
    {
         InterfaceNetServerDLL.MP4_ServerWriteDataEx(channelNumber, temp, Length, FrameType, status, 1);
    }
    else
    {
        InterfaceNetServerDLL.MP4_ServerWriteDataEx(channelNumber, temp, Length, FrameType, status, 0);//文件头
    }
    //封装SDK为
    //函数:25往发送缓存写数据。网络开发包通过这个接口获得板卡的数据
    [DllImport("HikServer.dll")]
    public static extern void MP4_ServerWriteDataEx(uint nPort, [MarshalAs(UnmanagedType.LPArray, SizeConst = 1024*1024)] byte[] pPacketBuffer, uint nPacketSize, int frameType, int breakable, int nImgFormat);
      

  4.   

    PSERVER_VIDEOINFO psvinfo = new PSERVER_VIDEOINFO();//服务器端的参数结构
     psvinfo.m_channum =Convert.ToByte(iTotalDSPs);
     psvinfo.m_waittime = 2;
             
    byte [] aaa=new byte[64];
      for (int i = 0; i < 64; i++)
     {
      aaa[i] =50;
    }
    psvinfo.m_datatype = aaa;
     flag = InterfaceNetServerDLL.MP4_ServerStart(ref psvinfo);//启动服务端-----------------就是这个地方出错了,HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!HELP!
     //启动服务器端的参数结构
        [StructLayout(LayoutKind.Sequential)]
        public struct PSERVER_VIDEOINFO
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
            public byte[] m_datatype;   //序列号  
            public byte m_channum;//系统的通道个数
            public uint m_waittime;//超时等待时间,1-300单位:分钟
            public uint m_bufnum;//目前没有使用
        }
      

  5.   

    都没人会吗
    flag = InterfaceNetServerDLL.MP4_ServerStart(ref psvinfo);//启动服务端
    //
    //函数:1启动服务端
            [DllImport("HikServer.dll")]
            public static extern bool MP4_ServerStart(ref PSERVER_VIDEOINFO videoinfo);
     //启动服务器端的参数结构
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public struct PSERVER_VIDEOINFO
        {
            [MarshalAs(UnmanagedType.ByValArray,SizeConst=64)]
            public byte[] m_datatype;   //序列号  
            public byte m_channum;//系统的通道个数
            public uint m_waittime;//超时等待时间,1-300单位:分钟
            public uint m_bufnum;//目前没有使用
        }
      

  6.   

    楼主的写好没有呀?写好了,发一份给我撒,我也在搞海康的东西,搞不出来啊!
    [email protected]谢谢!
      

  7.   

    我要VC的能把例子发给我吗?
    [email protected]
      

  8.   

    可否发我一份,120443053◎qq.com 期待ing.
      

  9.   

    能否发一份server与client给我,我邮箱是[email protected],谢谢