100分请教:截取对话框一个矩形内的图像后怎么通过socket传输?
时间:2011-12-22
来源:互联网
请教:截取客户端对话框的图像后怎么通过socket传到服务端,然后通过服务端把这张图片传输到其他连接到这个服务端的机器上并显示?
VC初学者,在网上查了很多资料,依然一知半解,请教各位高手了。
附上截图的函数,通过这个函数已经可以截取出对话框的一个矩形内的图像。
在一个按钮里:
CClientDC dc(this);
CDC cMemDC;
CBitmap cBit, *pOldBP;
HBITMAP hBmp;
cMemDC.CreateCompatibleDC(&dc);
cBit.CreateCompatibleBitmap(&dc,rect.right,rect.bottom);
pOldBP = cMemDC.SelectObject(&cBit);
cMemDC.BitBlt(0,0,rect.right,rect.bottom,&dc,0,0,SRCCOPY);
cMemDC.SelectObject(pOldBP);
if (OpenClipboard()) //把兼容位图放到剪贴板
{
EmptyClipboard();
SetClipboardData(CF_BITMAP,cBit.m_hObject);
CloseClipboard();
}
服务端和客户端可以连接,通过winsocket连接的。
服务端和客户端socket差不多一样:
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,1),&wsaData)){}
ServerSocket=socket(PF_INET,SOCK_STREAM,0);
if(ServerSocket == INVALID_SOCKET)
{
return;
}
if((dwip=inet_addr(ip))==INADDR_NONE)
{
return;
}
sockStruct.sin_family=AF_INET; //使用TCP/IP协议
sockStruct.sin_port = htons(4321);
sockStruct.sin_addr.S_un.S_addr = dwip;
if(connect(ServerSocket,(LPSOCKADDR)&sockStruct,sizeof(sockStruct)) == SOCKET_ERROR)
{return;}
WSAAsyncSelect(ServerSocket,m_hWnd,WM_CLIENT_READCOLOSE,FD_READ|FD_CLOSE);
VC初学者,在网上查了很多资料,依然一知半解,请教各位高手了。
附上截图的函数,通过这个函数已经可以截取出对话框的一个矩形内的图像。
在一个按钮里:
CClientDC dc(this);
CDC cMemDC;
CBitmap cBit, *pOldBP;
HBITMAP hBmp;
cMemDC.CreateCompatibleDC(&dc);
cBit.CreateCompatibleBitmap(&dc,rect.right,rect.bottom);
pOldBP = cMemDC.SelectObject(&cBit);
cMemDC.BitBlt(0,0,rect.right,rect.bottom,&dc,0,0,SRCCOPY);
cMemDC.SelectObject(pOldBP);
if (OpenClipboard()) //把兼容位图放到剪贴板
{
EmptyClipboard();
SetClipboardData(CF_BITMAP,cBit.m_hObject);
CloseClipboard();
}
服务端和客户端可以连接,通过winsocket连接的。
服务端和客户端socket差不多一样:
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,1),&wsaData)){}
ServerSocket=socket(PF_INET,SOCK_STREAM,0);
if(ServerSocket == INVALID_SOCKET)
{
return;
}
if((dwip=inet_addr(ip))==INADDR_NONE)
{
return;
}
sockStruct.sin_family=AF_INET; //使用TCP/IP协议
sockStruct.sin_port = htons(4321);
sockStruct.sin_addr.S_un.S_addr = dwip;
if(connect(ServerSocket,(LPSOCKADDR)&sockStruct,sizeof(sockStruct)) == SOCKET_ERROR)
{return;}
WSAAsyncSelect(ServerSocket,m_hWnd,WM_CLIENT_READCOLOSE,FD_READ|FD_CLOSE);
作者: desehawk 发布时间: 2011-12-22
各位高手帮忙看一下 谢谢了
作者: desehawk 发布时间: 2011-12-22
如果要通过网络传输, 最好要把截好的图先压缩一下. 比如压缩成GIF或者JPEG图像格式. 然后再传输到服务器
先将位图保存到文件里把. 可以在网上找找相关的资料.
先将位图保存到文件里把. 可以在网上找找相关的资料.
作者: krh2001 发布时间: 2011-12-22
感谢回复,我在网上查过很多这方面的资料,因为初学不久,看的也是一知半解。不知道可不可以帮忙给做个例子 我在截取图片后应该怎么写??
作者: desehawk 发布时间: 2011-12-22
把图片的地址在send或sendto里当成数据指针直接传走就行了,接收方接收后按同样的图片格式进行处理就行了。
作者: yanyuchonglou 发布时间: 2011-12-22
VC虽然是VC,但底子还是C的,一个*就打遍半边天了。
作者: yanyuchonglou 发布时间: 2011-12-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28