扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
int i=0,ii,iii,xx,yy,b=1,pa=1000,bl=3840,eee=8192,bb; short aa[350000];LPVOID pbit0=&aa[1000]; CDC wdc;CBitmap bmp1;CDC* pdc;char frame[5000];POINT pp;LPPOINT ppp=&pp; void* pbuf=(void*)(&frame[0]);int *paa=(int*)pbuf;char *pf;short *pfi; class mysocket:public CAsyncSocket //用CAsyncSocket类派生出新类mysocket {public: void OnSend(int nErrorCode) //当上一个数据报已经发送完后自动执行该函数 {if(pa>307200) //如果发送完一屏信息,则截取下一屏信息 {pa=1000; wdc.BitBlt(0,0,640,480,pdc,0,0,SRCCOPY); //把桌面图像复制到wdc的bmp1中 bmp1.GetBitmapBits(614400,pbit0); //获取图像信息 GetCursorPos(ppp); //获取鼠标位置 xx=ppp->x; yy=ppp->y; for(ii=0;ii<10&&xx<640&&yy<480;ii++) //显示鼠标指针 for(iii=0;iii } pf=&frame[4]; pfi=(short*)(pf+1); *paa=pa; for(;pf<&frame[3836];) //JPEG压缩一个数据报 {*pf=0x00; for(i=0;i<8;i=i+2) { if(aa[pa]==aa[pa-1]) //JPEG压缩 *pf=*pf|(0x40>>i); else if(aa[pa]==aa[pa-640]) *pf=*pf|(0x80>>i); else if(aa[pa]==aa[pa-641]) *pf=*pf|(0xc0>>i); else {*pfi=aa[pa]; pfi++; } pa++; } pf=(char*)pfi; pfi=(short*)(pf+1); } CAsyncSocket::AsyncSelect(FD_WRITE); //允许对象socks继续响应FD_WRITE事件 CAsyncSocket::SendTo(pbuf,bl,1050,NULL,0); //把该段信息发送出去,发送bl=3840字节 } }; mysocket socks; int CNetssDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here socks.Create(2001,SOCK_DGRAM,FD_WRITE,NULL); //建立数据报Socket,端口号2001 socks.SetSockOpt(SO_BROADCAST,&b,sizeof(BOOL),SOL_SOCKET); //选择广播数据报 socks.SetSockOpt(SO_DONTROUTE,&b,sizeof(BOOL),SOL_SOCKET); socks.SetSockOpt(SO_SNDBUF,&eee,sizeof(int),SOL_SOCKET); //设置发送缓冲区长度eee socks.AsyncSelect(FD_WRITE); //允许对象socks响应FD_WRITE事件 static CWindowDC ddc(GetDesktopWindow()); //引用桌面窗口指针定义对象ddc pdc=&ddc; //将指针pdc指向ddc wdc.CreateCompatibleDC(pdc); //建立与ddc兼容的device context, bmp1.CreateCompatibleBitmap(pdc,640,480); //建立与ddc兼容的位图 wdc.SelectObject(&bmp1); //选择bmp1 return 0; } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者