//可以试着去了解一下那个相关函数,然后修改一下,增加自己需要的参数
#include<windows.h>
#include"netsdk.h"
#include<stdio.h>
#include<iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int LoginID;//全局定义的设备句柄
SOCKET clientsocket;//定义全局的客户端socket
int num = 0;
char heartbuffer[10] = "test";//用来测试两者之间是否还有连接
int RealDataCallBack_V2(long lRealHandle,const PACKET_INFO_EX *pFrame,unsigned int dwuser)
{
int num;
BOOL result = TRUE;
num = send(clientsocket,pFrame->pPacketBuffer,pFrame->dwPacketSize,0);
printf("这里的数据量为:%d\n",num);
return result;
}
DWORD WINAPI Thread_Send_Data(LPVOID lpParameter)
{
//瑕疵注意调整一下通道号试一试
H264_DVR_Init(NULL,NULL);
H264_DVR_DEVICEINFO OutDev;
memset(&OutDev,0,sizeof(OutDev));
int nError = 0;
LoginID = H264_DVR_Login((char*)"192.168.1.102",34567,(char *)"admin",(char *)"",(LPH264_DVR_DEVICEINFO)(&OutDev),&nError);
if(LoginID > 0)
{
printf("**************login ok***************\n");
H264_DVR_CLIENTINFO VideoINFO; //设备的状态信息保存
VideoINFO.nChannel=0; //通道设定
VideoINFO.nStream=0; //主码流
VideoINFO.nMode=0; //TCP方式
long m_iPlayHandle = H264_DVR_RealPlay(LoginID,&VideoINFO); //////////////////////
if(m_iPlayHandle <= 0)
{
printf("start RealPlay wrong!\n");
}
else
{
printf("Start RealPlay OK!\n");
H264_DVR_SetRealDataCallBack_V2(m_iPlayHandle, (fRealDataCallBack_V2)RealDataCallBack_V2, 0);
while(send(clientsocket,heartbuffer,0,0)>=0)
{
//如果socket有效才可以发送出去
//这个方法验证一下还有有效的,在客户端socket有效的情况下,send函数发送的数据量是0。对数据没有影响
//无效的情况下,socket函数的返回值为-1,从而可以退出循环。
}
}
}
else
{
printf("**************login wrong************\n");
}
H264_DVR_Cleanup();
printf("H264_DVR_Cleanup() has been actived...................\n");
closesocket(clientsocket);
return 0;
}
int main(int argc,char *argv[])
{
if(argc != 2)
{
printf("usage:%s portnumber\n",argv[0]);
exit(-1);
}
short port;
if((port = atoi(argv[1]))==0)
{
printf("portnumber error.\n");
exit(-1);
}
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,2),&wsa)!=0)
{
printf("套接字初始化失败.\n");
exit(-1);
}
SOCKET serversocket;
if((serversocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
{
printf("创建套接字失败.\n");
exit(-1);
}
struct sockaddr_in serveraddress;
memset(&serveraddress,0,sizeof(sockaddr_in));
serveraddress.sin_family=AF_INET;
serveraddress.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
serveraddress.sin_port=htons(port);
if(bind(serversocket,(sockaddr*)&serveraddress,sizeof(serveraddress))==SOCKET_ERROR)
{
printf("套接字绑定到端口失败。\n");
exit(-1);
}
if(listen(serversocket,SOMAXCONN)==SOCKET_ERROR)
{
printf("侦听失败。\n");
exit(-1);
}
struct sockaddr_in clientaddress;
memset(&clientaddress,0,sizeof(clientaddress));
int addrlen;
HANDLE hThread;
while(1)
{
addrlen=sizeof(clientaddress);
printf("server %d is listening.......\n",port);
if((clientsocket=accept(serversocket,(sockaddr*)&clientaddress,&addrlen))==INVALID_SOCKET)
{
printf("接受客户端连接失败\n");
WSACleanup();
exit(-1);
}
printf("accept connection from %s\n",inet_ntoa(clientaddress.sin_addr));
hThread = CreateThread(NULL,0,Thread_Send_Data,NULL,0,NULL);
if(!hThread)
{
GetLastError();
perror("hThread");
break;
}
}
WSACleanup();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
网络摄像头的多线程操作
共44个文件
tlog:18个
dll:5个
manifest:2个
3星 · 超过75%的资源 需积分: 10 21 下载量 101 浏览量
2013-09-05
16:42:58
上传
评论
收藏 14.7MB RAR 举报
温馨提示
可以调用网络摄像头的操作,然后作为一个服务器进行转发操作,实现对网络摄像头的远端控制。
资源推荐
资源详情
资源评论
收起资源包目录
TRY1.rar (44个子文件)
TRY1
TRY1.sdf 28.89MB
TRY1.sln 879B
ipch
try1-875010a
try1-162c64fc.ipch 44.25MB
Debug
TRY1.pdb 715KB
TRY1.ilk 380KB
TRY1.exe 31KB
TRY1
NetSdk.dll 680KB
H264Play.dll 102KB
hi_h264dec.dll 124KB
CAMThread.cpp 4KB
TRY1.vcxproj.filters 1KB
StreamReader.dll 84KB
netsdk.h 89KB
TRY1.vcxproj.user 143B
TRY1.vcxproj 4KB
Debug
link.6468.read.1.tlog 2B
CAMThread.obj 60KB
vc100.idb 539KB
CL.write.1.tlog 410B
CL.read.1.tlog 20KB
link.6468-cvtres.write.1.tlog 2B
mt.read.1.tlog 342B
rc.write.1.tlog 322B
TRY1.exe.intermediate.manifest 381B
rc.read.1.tlog 314B
TRY1_manifest.rc 198B
mt.command.1.tlog 384B
cl.command.1.tlog 706B
link-cvtres.read.1.tlog 2B
TRY1.exe.embed.manifest.res 472B
TRY1.exe.embed.manifest 406B
link.write.1.tlog 856B
TRY1.lastbuildstate 82B
link-cvtres.write.1.tlog 2B
link.command.1.tlog 2KB
link.6468.write.1.tlog 2B
rc.command.1.tlog 534B
link.read.1.tlog 3KB
TRY1.log 2KB
mt.write.1.tlog 342B
link.6468-cvtres.read.1.tlog 2B
vc100.pdb 308KB
DllDeinterlace.dll 20KB
TRY1.suo 13KB
共 44 条
- 1
资源评论
- EL_jk2014-03-03参考一下,对现在正在做的项目会有帮助
seakia
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功