网络监控(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;//显示区域
}
//-------------------------
下面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;//显示区域
}
//-------------------------
现在客户端没什么问题了
只是连接服务器端时,出现内存不让写written,有点奇怪,还没找到原因。
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);
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;//目前没有使用
}
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;//目前没有使用
}
[email protected]谢谢!
[email protected]